簡體   English   中英

readonly public,readwrite private property

[英]readonly public, readwrite private property

我看到了這個帖子 ,但是在iOS7中並沒有完全清楚,因為編程指南說你可以省略屬性的@synthesise關鍵字。

我想有一個@propertyreadonly外部,但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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM