[英]readonly public, readwrite private property
我看到了這個帖子 ,但是在iOS7中並沒有完全清楚,因為編程指南說你可以省略屬性的@synthesise
關鍵字。
我想有一個@property
是readonly
外部,但readwrite
內部。 我可以像這樣使用@property
關鍵字嗎?
編輯:提供的答案將被認為更正確,或者至少更為慣用。 要在類擴展中具有單獨的readwrite
屬性,還是直接在實現中訪問ivar?
編輯:顯示我正在使用類擴展,如答案中所示。
//.h
@interface CACustomerAuthenticator : NSObject
@property (nonatomic, copy, readonly) NSString *username;
@end
//.m
@interface CACustomerAuthenticator ()
@property (nonatomic, copy, readwrite) NSString *username;
@end
如果要執行此操作,請在類擴展中重新聲明屬性。
例如,如果您有一個名為MyClass的類:
MyClass.h
@property (nonatomic, copy, readonly) NSString *username;
MyClass.m
// Create a class extension before the @implementation section
@interface MyClass ()
@property (nonatomic, copy, readwrite) NSString *username;
@end
現在公共接口的屬性為readonly,私有接口將其作為readwrite。 並且您不需要@synthesize屬性,默認情況下,支持iVar可用作_username
。
readonly
就足夠了。
運用
@synthesize username = _someVar;
您可以使用username
訪問_someVar
。 如果沒有synthesize
,那么
@synthesize username = _username;
自動生成。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.