簡體   English   中英

當一個屬性是只讀的時候,復制和非原子是無意義的嗎?

[英]When a property is readonly, is copy and nonatomic meaningless?

假設我有屬性

@property (readonly) NSString* p1;
@property (readonly, copy) NSString* p2;
@property (readonly, nonatomic) NSString* p3;

它們之間有什么區別嗎?

我認為沒有區別因為“復制”和“非原子”沒有效果,因為setter方法不存在。

存在差異,它將影響生成的getter的行為方式。

像這樣的東西:

@property (readonly) NSString* p1;

- (NSString *)p1 {
    @synchronized(self) {
        return _p1;
    }
}

@property (readonly, copy) NSString* p2;

- (NSString *)p2 {
    @synchronized(self) {
        return [_p2 copy];
    }
}

@property (readonly, nonatomic) NSString* p3 {

- (NSString *)p3 {
    return _p3;
}

是的,它們是不同的,因為可以使用類別添加setter。

順便說一句,您應該始終為NSString屬性指定copy

暫無
暫無

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

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