[英]what is the difference between a readwrite property and a nonatomic assign property?
我已經看到 int、BOOL 等與非原子、分配相同的讀寫。
我對此有些困惑。 我知道在非原生對象上,我們通常會做非原子的,保留。
這是簡短的答案:
atomic
vs nonatomic
主要確保從合成的 getter 返回完整的值,並且完整的值由合成的 setter 寫入(默認為 atomic。)
readwrite
與readonly
確定合成屬性是否具有合成訪問器(readwrite 有一個 setter 並且是默認值,readonly 沒有)。
assign
vs retain
vs copy
決定了合成訪問器如何與 Objective-C memory 管理方案交互:
assign
是默認值,只是執行變量賦值retain
指定應發送新值 -retain 分配並發送舊值-release
copy
指定應在分配時發送新值 -copy 並發送舊值-release
。在閱讀了這么多文章、SO 帖子並制作了演示應用程序來檢查變量屬性屬性后,我決定將所有屬性信息放在一起
所以下面是詳細的文章鏈接,您可以在其中找到上述所有屬性,這將極大地幫助您。 非常感謝所有在這里給出最佳答案的人!!
例子:
@property (nonatomic, retain) NSString *name;
@synthesize name;
例子:
@property (nonatomic, assign) NSString *address;
@synthesize address;
只讀
例子:
@property (nonatomic, readonly) NSString *name;
@synthesize name;
例子:
@property (nonatomic, readwrite) NSString *name;
@synthesize name;
readwrite
意味着 getter 和 setter 都存在; 相反的是readonly
。 通常,您唯一一次顯式聲明屬性readwrite
是在 class 的 class 擴展中,其中公共接口將屬性聲明為readonly
- 因此它是公開只讀的,但在內部您可以獲取和設置。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.