為什是 property不自動生成屬性?

2022-09-12 23:15:31 字數 1163 閱讀 6262

使用 @property 時候,xcode 會自動為我們生 setter 和 getter,甚至會自動生成屬性。

例如下面的情況:

//

.h 檔案

@inte***ce

person : nsobject

@property (copy, nonatomic) nsstring *name;

@end

//.m 檔案

@implementation

person

@end

上面的**等價於下面的**(不考慮多執行緒):

//

.h 檔案

@inte***ce

person : nsobject

- (nsstring *)name;

- (void)setname:(nsstring *)name;

@end

//.m 檔案

@implementation

person

- (nsstring *)name

- (void)setname:(nsstring *)name

@end

但是當我們同時重寫 name 的 getter 和 setter 的時候,問題就出現了:

同時附上**:

//

.h 檔案

@inte***ce

person : nsobject

@property (copy, nonatomic) nsstring *name;

@end

//.m 檔案

@implementation

person

- (nsstring *)name

- (void)setname:(nsstring *)name

@end

上面這段**,xcode 會報警告,說並沒有 _name 屬性,所以,我們同時重寫 name 的 getter 和 setter 之後,xcode 就不會自動給我們建立 _name 屬性。為什麼會這樣呢?要理解這個原理就不得不提計算屬性這個概念,有些 @property 定義的屬性並不一定有

batch normalization為什麼效果好

batch normalization為什麼效果好 深度學習中 batch normalization為什麼效果好?龍鵬 言有三的回答 知乎 深度學習中 batch normalization為什麼效果好?魏秀參的回答 知乎 為什麼batch normalization那麼有用?autocyz的文章...

display inline block是什麼意思

很多時候我們必須使一些塊元素併排顯示,一般想到的是必須使用浮動,但是塊元素浮動給邊距 margin 的時候在ie下會出現加倍的bug 所以很多時候不得不把這個塊元素套在乙個內聯元素裡面,然後給內聯元素浮動和邊距。今天看到了懌飛 秦歌和烏龍茶關於display inline block的文章,很不錯,...

no database selected是什麼意思

no database selected是什麼意思?是因為你沒有選擇新建立的表所在的資料庫,no database selected 意思就是沒有選擇資料庫。推薦 mysql 教程 解決辦法 在建立表之前使用use語句,格式 use database name,這樣就開啟了資料庫,就可以對資料庫進行...