Objective C傳遞資料小技巧

2021-06-26 20:55:26 字數 529 閱讀 5476

比如說,如果你想向uialertview的delegate方法中傳遞一些資訊,怎麼辦?繼承uialertview麼?使用category?都可以,其實還有乙個更簡單的辦法,那就是使用objc_setassociatedobject(id object, const void *key, id value, objc_associationpolicy policy)函式。這個函式定義在objc/runtime.h中。

首先,定義乙個全域性靜態變數,用它的位址作為key。

static char alertinfokey;

然後,在你alloc uialertview的地方呼叫objc_setassociatedobject。如圖。

policy使用objc_association_retain,這樣會自動retain你想傳遞的物件,也不用擔心記憶體洩漏的問題,因為它會在alertview釋放的時候自動release。

接下來,你就可以在uialertview的delegate方法中獲取傳遞的物件了。

這個方法簡單方便。越是簡單,越易濫用,請酌情使用。

Objective C中的值傳遞和引用傳遞

值傳遞 pass by value 引用傳遞 pass by reference 1 傳值 形參和實參佔不同記憶體單元,傳遞的實際上是實參變數或表示式的乙個拷貝副本。形參的值發生變化也不會傳回給實參,是單向傳遞。void increase int x 2 傳位址 傳遞的是實參變數位址的拷貝值,而不是...

精通Objective C 物件和訊息傳遞

訊息傳遞 附錄前一章節建立的atom類 nsobject類中用於建立類例項 即物件 的方法 id alloc通過alloc方法,可以建立物件,下面以建立乙個atom物件為例 建立乙個屬於atom類的物件,並為它分配乙個資料型別為id的變數 id atom atom alloc 與上面語句等價,顯示定...

objective c小貼條(一)

objective c 2.0 中增加了 dynamic 指令,表示變數對應的屬性訪問器方法,是動態實現的,你需要在nsobject 中繼承而來的 bool resolveinstancemethod sel sel 方法中指定動態實現的方法或者函式。inte ce person nsobject ...