修改聲明為readonly的屬性值(iOS)

readonly:只讀屬性,只生成getter方法,也就是說只能訪問變量,不能修改。

那我們?nèi)绻胍淖冾愔新暶鳛閞eadonly的屬性值該怎么做呢?


如果直接用屬性的setter方法,那么就直接報(bào)錯(cuò),提示不能給聲明為readonly的屬性賦值。

這個(gè)時(shí)候我們可以用KVC來(lái)給聲明為readonly的屬性重新賦值。

例:

Dog.h

@interface Dog: NSObject

@property (nonatomic, assign, readonly) NSInteger num;

@property (nonatomic, copy, readonly) NSString *name;

- (instancetype)initNum:(NSInteger)num name:(NSString *)name ;

@end

*******

Dog.m

@implementation Dog

- (instancetype)initNum:(NSInteger)num name:(NSString *)name {

self = [super init];

if (self) {

_num=num;

_name=[name copy];

}

return self;

}

************************

Dog *dogOne=[[Dog alloc]initNum:1 name:Tom];

如何修改dogOne對(duì)象的name屬性值為Jerry。

dogOne=@“Jerry”//會(huì)直接報(bào)錯(cuò),不能給聲明為readonly的屬性賦值

用KVC

[dogOne setValue:@"Jerry" forKey:NSStringFromSelector(@selector(name))];

NSlog(@" dogOne name=%@",dogOne.name);

運(yùn)行結(jié)果

dogOne name=Jerry

修改成功?。?!

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時(shí)請(qǐng)結(jié)合常識(shí)與多方信息審慎甄別。
平臺(tái)聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡(jiǎn)書系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

  • 出題者簡(jiǎn)介: 孫源(sunnyxx),目前就職于百度,負(fù)責(zé)百度知道 iOS 客戶端的開發(fā)工作,對(duì)技術(shù)喜歡刨根問底和...
    戈多_于勒閱讀 1,877評(píng)論 0 5
  • 互聯(lián)網(wǎng)就像是生產(chǎn)碎片信息的永動(dòng)機(jī),信息不知從哪里生產(chǎn)出來(lái),又最終投放到哪個(gè)人,似乎人人都在改變這個(gè)世界,卻不是人人...
    Daring_dd閱讀 325評(píng)論 0 0
  • 一陣風(fēng) 天就咧出個(gè)大雁模樣的豁口兒 輕輕一吹 皺了江面 好似一片綢緞 紋路自然天成 凈水清風(fēng) 支起個(gè)簡(jiǎn)單的,秋的剪...
    平心如我閱讀 220評(píng)論 0 0
  • 有一段悲傷的記憶,關(guān)于離開,關(guān)于陰陽(yáng)兩隔。 1 我姥爺去世幾年了,像是經(jīng)歷了一場(chǎng)變故,承受了一段折磨...
    Cinephile1997閱讀 739評(píng)論 1 6
  • 希望你可以 什么都不去想 然后不動(dòng)聲色地 成為大人。 但是你 把煩瑣一件一件地裝進(jìn)玻璃瓶后 懸在宅前的百年老樹上 ...
    一角天空閱讀 154評(píng)論 0 2

友情鏈接更多精彩內(nèi)容