iOS中@property的默认值是什么?

时间:2011-04-27 10:18:51

标签: ios properties

iOS中@property的默认值是什么?

例如,如果我宣布@property NSString *摄影师;

是默认值(assign)或(保留)还是其他什么?

(原子,非原子)?

我无法从文档中找到此信息。 感谢

2 个答案:

答案 0 :(得分:15)

我认为默认值为(atomic, assign),但是,您不应将它们留空。

默认值可能随时发生变化,而您正在编写依赖于属性定义的代码。

例如,如果您依赖默认的assign,并且由于某种原因它将在未来变为retain,那么您的所有代码都将泄漏。

相反,如果默认值是retain并且您依赖它并且它更改为assign,那么当您不可避免地释放对象时,您的代码将崩溃。

不管它们是什么,都不要依赖任何默认值。

明确定义属性的属性。

答案 1 :(得分:0)

默认情况下,属性是原子的,因此合成访问器提供对多线程环境中属性的强大访问 - 也就是说,无论其他线程同时执行什么,始终完全检索或设置从getter返回的值或通过setter设置的值。

如果指定strong,copy或retain并且未指定nonatomic,则在引用计数环境中,对象属性的合成get访问器使用锁并保留并自动释放返回的值。

我不认为苹果将来会改变它,但遗憾的是最常见的是非原子的,所以你可能不得不把它写下来。