`
xhanxhanxhan
  • 浏览: 208722 次
  • 性别: Icon_minigender_1
  • 来自: 杭州
社区版块
存档分类
最新评论

objc 实现类变量

阅读更多

从HTTPRiot 源码学习而来。
看到 mergedOptions 这个方法还真想起RUBY的好。

 

@implementation HRRestModel
// 全局静态变量,类变量就是用这个存储
static NSMutableDictionary *attributes;
 
+ (void)initialize {    
    if(!attributes)
        attributes = [[NSMutableDictionary alloc] init];
}
 
// 防止继承的类使用相同的变量,很漂亮的代码
+ (NSMutableDictionary *)classAttributes {
    NSString *className = NSStringFromClass([self class]);
 
    NSMutableDictionary *newDict;
    NSMutableDictionary *dict = [attributes objectForKey:className];
 
    if(dict) {
        return dict;
    } else {
        newDict = [NSMutableDictionary dictionaryWithObject:[NSNumber numberWithInt:HRDataFormatJSON] forKey:@"format"];
        [attributes setObject:newDict forKey:className];
    }
 
    return newDict;
}
 
// 设置类变量
+ (void)setAttributeValue:(id)attr forKey:(NSString *)key {
    [[self classAttributes] setObject:attr forKey:key];
}
 
 
分享到:
评论

相关推荐

    objc运行时源码探究

    objc运行时提供了对类、对象和方法的动态操作能力,允许开发者在运行时创建类、动态分配对象以及修改对象和类的行为。这一点对于构建高度模块化和动态性要求高的应用程序来说至关重要。objc运行时的源码探究对于理解...

    ios demo,自定义一个类,实例变量和成员变量的实现

    本示例“ios demo,自定义一个类,实例变量instance和成员变量的实现”旨在教授如何在Objective-C中创建自定义类并管理其实例变量和成员变量。 首先,我们需要理解什么是实例变量(instance variable,简称ivar)和...

    用objc/runtime给类别扩展属性代码

    本篇文章将深入探讨如何利用objc/runtime为类别扩展属性的代码实现。 首先,我们需要理解Objective-C runtime的基本概念。Objective-C runtime 是一种运行时系统,它在程序运行期间管理类、对象、消息传递等。与...

    J2OBJC的demo

    这包括对Java类、接口、方法、变量等进行转换。 2. **类型映射**:Java和Objective-C的数据类型有所不同,J2OBJC会将Java的数据类型映射到Objective-C对应的类型上。 3. **对象模型转换**:Java的面向对象特性如...

    iOS-OC-Runtime使用小谈(objc_setAssociatedObject)

    本文将深入探讨`objc_setAssociatedObject`这一Runtime函数,它是OC关联对象的主要实现方式。 `objc_setAssociatedObject`是Objective-C Runtime库中用于绑定一个对象到另一个对象的一个函数,它允许我们在不修改...

    通过 objc_setAssociatedObject (关联) 的形式实现为Category (类别) 添加属性

    Category是一种分类、划分已存在类的方法和协议的方式,它不涉及新的实例变量。在Objective-C中,Category通常用于对系统类进行功能扩展,比如增加新的方法,但不能直接添加属性。 为Category添加属性,我们需要...

    ObjC.pdf官方文档

    实现类:** - 使用`@implementation`关键字实现一个类。 - 示例:`@implementation ClassName` **3. 属性:** - 可以在类声明中定义属性(即成员变量)。 - 示例:`@property (nonatomic, assign) int age;` ####...

    Objc4--750

    - **Category的实现**:Category如何添加方法到原有的类,以及如何避免category冲突。 - **Block的实现**:runtime如何处理Block,包括捕获局部变量、copy操作和循环引用问题。 - ** Associated Objects:**一种非...

    Objc (apple.com)

    - **类类型**:介绍不同类型的类对象,包括元类和类变量。 - **类对象**:每个类都有对应的类对象,可以用来创建该类的实例。 - **类名在源代码中的表示**:类名通常采用大驼峰命名法,以清晰地区分于普通变量。 - *...

    Apple 可编译 objc 源码.zip

    当你发送一个消息给对象时,如`[anObject doSomething:]`,运行时系统会根据对象的类寻找对应的方法实现。 2. **动态类型**: Objective-C支持动态类型,意味着可以在运行时确定对象的实际类型。这使得我们可以...

    j2objc-0.5.6.zip_J2ObjC_j2objc-0.5.6

    1. **安装与配置**:首先,需要下载J2ObjC的压缩包,例如本例中的j2objc-0.5.6.zip,解压后将其添加到系统的PATH环境变量中,以便在命令行中调用。 2. **转换Java代码**:通过命令行工具执行`j2objc`命令,指定待...

    objc4-750-master.zip

    runtime提供了创建、销毁类和对象的接口,如`objc_allocateClassPair`、`objc_init`等。 4. **动态类型** Objective-C允许在运行时确定对象的类型,这得益于runtime的动态类型特性。例如,`-[NSObject ...

    Objective-C显示变量的值一

    这样,我们不仅实现了显示变量值的功能,还遵循了面向对象的设计原则,提高了代码的可读性和可维护性。 总结一下,Objective-C中显示变量的值通常涉及声明变量、对变量进行运算并使用`NSLog`函数或自定义方法来输出...

    objc runtime 源码 208

    在runtime中,每个类都有一个结构体表示,包含了元类(meta-class)、实例变量列表、方法列表等信息。元类主要处理类级别的消息,如类方法的调用。通过`class_getSuperclass`函数,我们可以获取到一个类的父类。 2....

    objc4-818.zip

    元类在objc4-818中有着详细实现,通过元类可以理解类是如何自我描述的。 7. **动态类型**:Objective-C支持动态类型,允许在运行时检查和转换变量的类型。这在源码中体现在`objc_object`结构体和类型查询函数如`...

    objc4-750.zip

    元类的实现细节在objc4源码中得以展现,有助于理解类和元类之间的关系。 9. **KVO(Key-Value Observing)和KVC(Key-Value Coding)**:这两种机制允许对象监听其他对象的属性变化,以及根据键值访问对象的属性。...

    gcc-objc-3.4.5-20060117-3.tar.gz

    这些库文件提供了一系列的函数和类,使得开发者能够方便地实现各种功能,如内存管理、I/O操作、网络通信等。 安装和使用这个GCC Objective-C版本时,用户需要先解压这个tar.gz文件,然后根据MinGW的安装指南将解压...

    objc4-required-headers.zip

    深入到`objc/objc-class.h`,我们可以看到类的定义和操作,如`objc_allocateClassPair`用于创建新的类,`class_addMethod`用于添加方法,以及`class_getInstanceVariable`用于获取实例变量等。这些函数允许开发者在...

    03-03-04成员变量的实现.pdf

    理解成员变量的实现对于深入掌握Objective-C的内存管理和对象模型至关重要,这对于编写高效、稳定和健壮的iOS应用程序尤其重要。在实际开发中,合理使用成员变量和`@property`可以有效地提高代码的可读性和可维护性...

Global site tag (gtag.js) - Google Analytics