sin*_*inθ 7 iphone xcode objective-c private-members automatic-ref-counting
所以搜索Stack Overflow这似乎是如何在Objective-C中创建私有变量:
@interface ClassName()
{
@private
NSArray* private;
}
@property (strong, nonatomic) NSArray* public;
@end
Run Code Online (Sandbox Code Playgroud)
现在这是我感到困惑的地方.该属性声明为(strong, nonatomic),但私有变量没有任何类型.那么弧怎么知道它是否强大?
Car*_*zey 13
实例变量__strong默认为.
从Apple的ARC Transition Guide,关于变量(假定包含实例变量):
__strong是默认值
然后:
对于ARC,实例变量默认是强引用 - 将对象直接分配给实例变量会延长对象的生命周期
这一直持续到该物业连接到ivar via @synthesize.此时,属性的所有权限定符优先.但是,如果您将属性声明为强大的属性,然后手动实现setter和getter,则还必须手动声明支持ivar的所有权限定符.
对于属性,属性的所有权隐含了关联实例变量的所有权:
请参阅http://clang.llvm.org/docs/AutomaticReferenceCounting.html:
如果合成了一个属性,则关联的实例变量是实例变量,它可能由@synthesize声明隐式命名.如果关联的实例变量已存在,则其所有权限定必须等于属性的所有权; 否则,将使用该所有权限定创建实例变量.
通常,Objective-C对象默认为strong:
如果使用可保留对象所有者类型声明对象,但没有显式所有权限定符,则会隐式调整其类型以具有__strong限定.
请注意,由于LLVM 4.0编译器(Xcode 4.4),@synthesize语句和关联的实例变量是自动创建的,因此您只需要声明属性.
| 归档时间: |
|
| 查看次数: |
2961 次 |
| 最近记录: |