OC閱讀筆記一 盡量使用不可變物件

2021-07-10 17:39:32 字數 397 閱讀 5089

當將可變物件放入collection又修改值時,容易破壞set的內部資料結構,令其失去固有的語義;

將屬性宣告為readonly後,當試圖改變屬性值時編譯器就會報錯.保證開發時物件的底層資料不會改變,物件本身的資料結構也就不可能出現不一致的現象.

在物件內部"class-continuation分類"可以將屬性重新宣告為readwrite.

如要修改屬性值,應該通過該類提供的方法來實現.

在物件外部,仍然可以設定這些屬性值,通過kvc來實現.違規繞過該類提供的api.

或者通過類別資訊查詢功能查出對應的例項變數在記憶體中的偏移量來修改對應的例項變數的值.

可以通過class_copyivarlist和class_copypropertylist獲得類中所有的成員變數和屬性的詳細資訊.   

OC閱讀筆記十 匿名物件

協議可以在某種程度上提供匿名型別,當介面背後有多個不同的實現類,又不想宣告指定哪個類時,可以使用這種方法.因為有時候這些類會變,有時候又無法容納於標準的類繼承體系中,不能以某個公共基類來統一標示.在一些情況下,物件的型別並不重要,重要的是物件有沒有實現某些方法,可以用 匿名型別 來表達該概念.在開發...

OC閱讀筆記十三 ARC 下

在方法中返回自動釋放物件的時候,會呼叫objc autoreleasereturnvalue函式檢測返回的物件是否執行retain操作,如果執行就設定全域性資料結構的乙個標誌位.而不執行autorelease操作.與之相似,如果呼叫方法的 要保留此物件,則呼叫objc retainautorelea...

閱讀筆記一

保持軟體設計的品質。壞的架構設計會招致更壞的架構設計。開發團隊中健康的工作關係將直接有益於軟體設計。不健康的關係和個性膨脹會導致不健康的軟體。軟體設計的關鍵品質是內聚和耦合。高內聚 strongcohesion 和低耦合 low coupling 鬆弛而模糊的架構將導致每個 元件編寫得不好,並且相互...