簡體   English   中英

Objective-C屬性,只讀公開,但有私有的setter

[英]Objective-C property that is readonly publicly, but has a private setter

我想使用@property語法聲明一個公開只讀的合成屬性,但是有一個可以在類中私下調用的setter。

由於它是Objective-C,這基本上意味着將合成setFoo:方法,但是在類本身之外調用它將導致警告(無法識別的選擇器)。 要觸發警告,我必須readonly聲明屬性; 有沒有辦法強制合成的setter只在類中可用?

我認為你正在尋找的是類擴展。 您可以在標頭中將該屬性聲明為只讀:

@interface MyClass : NSObject {
}

@property (readonly, assign) NSInteger myInteger;

@end

然后在實現文件中的類擴展中重新聲明:

@interface MyClass ()

@property (readwrite, assign) NSInteger myInteger;

@end


@implementation MyClass

@end

有關Apple的文檔,請查看更多信息

我可能會遲到,但沒有擴展我使用了以下技術

@interface MyClass : NSObject {
 NSString * name;
}

@property (readonly, strong) NSString * name;

@end

另一方面在實現文件中

@implementation MyClass
 @synthesize name;

 - (id)initWithItems:(NSDictionary *)items {
self = [super init];
if(self)
{ 
  name = @"abc";
}

return self;
}

@end

這樣做,它將設置您的價值,並將以只讀方式訪問。 謝謝。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

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