Ind*_*ore 2 iphone objective-c ios automatic-ref-counting
这是我在iOS上使用ARC的简单代码:
@interface Person : NSObject {
NSObject *objStrong;
NSObject *objWeek;
}
@property(strong) NSObject *objStrong;
//getting error at this line
@property(weak) NSObject *objWeek; //Existing ivar 'objWeek' for _week property 'objWeek' must be _week
@end
@implementation Person
@synthesize objStrong;
@synthesize objWeek;
@end
Run Code Online (Sandbox Code Playgroud)
当我尝试编译时,编译器抱怨_weak属性'objWeek'的现有ivar'objWeek'.为什么这段代码没有正确编译?
Ada*_*ght 10
它抱怨因为支持变量NSObject *objWeek
被声明为__strong
(所有其他未注释的Objective C指向可保留对象的指针__strong
).将支持变量更改为__weak NSObject *objWeek
,编译器会再次喜欢你.
编辑:根据要求,来自LLVM的clang的ARC文档:
4.4.1.对象
如果使用可保留对象所有者类型声明对象,但没有显式所有权限定符,则会隐式调整其类型以具有__strong限定.
作为一种特殊的情况下,如果对象的基本类型是级(可能协议修饰),所述类型被调整为具有__unsafe_unretained资格代替.
链接:http://clang.llvm.org/docs/AutomaticReferenceCounting.html#ownership.inference
归档时间: |
|
查看次数: |
3083 次 |
最近记录: |