objective-c中@property的默认属性是什么?

时间:2015-09-18 12:42:55

标签: ios objective-c

@property可以设置为strong,weak,assign,copy ... like

@property (copy, nonatomic) NSString *string;

@property (strong ,nonatomic) CustomClass *object;

@property (weak,nonatomic) id <CustomDelegate>delegate;

但是,如果

@property id <CustomDelegate>delegate; weak?strong?
@property (copy, nonatomic) NSString *string; strong?

如果(弱,非原子)缩写。 id的默认值是多少?还有其他吗?

2 个答案:

答案 0 :(得分:3)

属性默认为原子

这意味着合成访问器确保始终通过getter方法完全检索值或通过setter方法完全设置,即使从不同的线程同时调用访问器也是如此。

由于原子访问器方法的内部实现和同步是私有的,因此无法将合成访问器与您自己实现的访问器方法相结合。例如,如果您尝试为原子,readwrite属性提供自定义setter,但让编译器合成getter,则会收到编译器警告。

有关详细信息,请阅读本文https://developer.apple.com/library/ios/documentation/Cocoa/Conceptual/ProgrammingWithObjectiveC/EncapsulatingData/EncapsulatingData.html

由于

答案 1 :(得分:2)

id是对未知类的一些随机 Objective-C对象的引用,因此它的默认属性为:

@property (atomic, readwrite, strong) id value;

注意:代表99.999%的时间应为weak