这次探索源于一个朋友问的问题,当我们定义一个类的实例变量的时候,可以指定其修饰符:1
2
3
4
5
6@interfaceSark:NSObject{__strongid_gayFriend;// 无修饰符的对象默认会加 __strong__weakid_girlFriend;
__unsafe_unretainedid_company;
}@end这使得 ivar (instance variable) 可以像属性一样在 ARC 下进行正确的引用计数管理。那么问题来了,假如这个类是动态生成的:1
2
3
4
5Class class = objc_allocateClassPair(NSObject.class,"Sark",0);
class_addIvar(class,"_gayFriend",sizeof(id), log2(sizeof(id)), @encode(id));
class_addIvar(class,"_girlFriend",sizeof(id), log2(sizeof(id)), @encode(id));
class_addIvar(class,"_company",sizeof(id), log2(sizeof(id)), @encode(id));
objc_registerClassPair(class);该如何像上面一样来添加 i
...
继续阅读
(31)