iOS 修改唯讀變數

2021-07-16 12:35:51 字數 650 閱讀 6242

在ios中唯讀變數是不應該被修改的,特別是框架類的唯讀變數,修改了可能帶來莫名其妙的錯誤! 

但是不應該不等於不能,通過動態執行時還是可以修改的:

比如:@inte***ce

reonlyobject :

nsobject

@ property (nonatomic, readonly)

nsnumber

*number;

@end

在使用時:

reonlyobject

*onlynumber = [[

reonlyobject

alloc

]  init];

= @10; //這是不允許的

但是這樣就可以:

[onlynumber

setvalue

:@20

forkey

:@"number"];

原因很簡單,readonly是編譯時的特性,也就是編譯時只生產get方法,但不會生產set方法。 而

- (void

)setvalue:(

nullable

id)value forkey:(

nsstring

*)key;

是執行時的方法,騙過了編譯器。

強行修改const唯讀變數

修改const唯讀變數,只能修改區域性常量,不能修改全域性靜態常量。例如 某函式內部 const int const value 100 int ptr int const value ptr 200 因為在函式內部宣告的 const value,其本質上還是乙個函式內的區域性變數,儲存區在該函式的...

linux shell之唯讀變數,刪除變數,

唯讀變數 shell 程式設計中可以使用關鍵字readonly 命令將變數定義為唯讀變數,唯讀變數的意思是變數值不能被修改。如下是shenll 程式設計中唯讀變數demo 執行指令碼會報錯,在指定testurl 為唯讀變數後,無列印個出修改值,而是直接報錯 readonly variable 刪除變...

iOS 標頭檔案 唯讀屬性

標頭檔案 property nonatomic,readonly uiview headview import viewcontroller.h inte ce viewcontroller end implementation viewcontroller mrc property 特性是由xco...