為什麼要用 dynamic

2021-09-25 05:35:01 字數 616 閱讀 2568

如果不想讓編譯器自動合成訪問方法,我們可以自己實現。如果我們只實現了其中乙個訪問方法,那麼另外乙個還是由編譯器來合成。還有一種方法能阻止編譯器自動合成訪問方法,就是使用**@dynamic**關鍵字。

它會告訴編譯器:不要自動建立實現屬性所用的例項變數,也不要為其建立訪問方法。此外,在編譯訪問屬性的**時,即使編譯器發現沒有定義訪問方法,也不會報錯,它相信這些方法能夠在執行期找到。

比如說:如果從coredata框架中的nsmanagedobject類裡繼承了乙個子類,那麼就需要在執行期動態建立訪問方法。繼承nsmanagedobejct時之所以要這樣做,是因為某些屬性不是例項變數,其資料**後端資料庫。

@inte***ce eocperson : nsmanagedobject

@property nsstring *firstname;

@property nsstring *lastname;

@end

@implementation eocperson

@dynamic firstname,lastname;

@end

編譯器不會為上面這個類自動合成訪問方法和例項變數。如果用**訪問其中的屬性,編譯器也不會發出警示資訊。

為什麼要用 enable shared from

樓主 hma if you think you can,you can.panrainbow 憂鬱淡藍 於 tue nov 9 11 48 38 2010 提到 引入enable shared from this的原因是可以實現返回值為指向該類本身的 shared ptr,為什麼以this為拷貝構造...

為什麼要用補碼

在探求為何機器要使用補碼之前,讓我們先了解原碼,反碼和補碼的概念.對於乙個數,計算機要使用一定的編碼方式進行儲存.原碼,反碼,補碼是機器儲存乙個具體數字的編碼方式.原碼就是符號位加上真值的絕對值,即用第一位表示符號,其餘位表示值.比如如果是8位二進位制 1 原 0000 0001 1 原 1000 ...

為什麼要用AndroidStudio

原因一 android studio是基於intellij idea開發的,所以android studio繼承了intellij idea的所有功能.原因二 android studio是谷歌開發的,專門用於android開發的編輯器,換句話說是親兒子,谷歌會把所有好吃的好用的先給親兒子.原因三 ...