在oc和 c之間互相呼叫的時候,有時候必須用一些橋接關鍵字.
__bridge只做型別轉換,但是不修改物件(記憶體)管理權;
__bridge_retained(也可以使用cfbridgingretain)將objective-c的物件轉換為core foundation的物件,同時將物件(記憶體)的管理權交給我們,後續需要使用cfrelease或者相關方法來釋放物件;
__bridge_transfer(也可以使用cfbridgingrelease)將core foundation的物件轉換為objective-c的物件,同時將物件(記憶體)的管理權交給arc。
__bridge
比如說乙個類例項想要轉換成void * 那就必須這樣定義,不然的話會報錯.
class *a;
void *b = (__bridge void *)a;
相反的class *c = (__bridge class *)b;
生命週期僅在大括號的**內
__bridge
_retained
上邊**僅僅是指向乙個物件,如果物件不存在那麼它也指向null, 這個關鍵字是指向且擁有該物件就是.
生命週期如果是arc不用管,如果不是那麼必須手動release。
class *a;
void *b = (__bridge void *)a;
a retain;
__bridge_transfer
這個關鍵字的相當於釋放原物件的擁有權,然後自己擁有。
class *a;
void *b = (__bridge void *)a;
a release;
b retain;
大概就是這樣
OC 型別轉換
nsdata nsstring nsstring astring nsstring alloc initwithdata adataencoding nsutf8stringencoding nsstring nsdata nsstring astring 1234abcd nsdata adata...
iOS開發之OC和unity互動
1 unity呼叫oc oc類 testunity.h extern c testunity.m extern c unity的c 檔案 if unity ios 引入宣告 dllimport internal static extern void testunityfunction int ind...
iOS開發 OC資料型別
以下是oc中的例項,swift部分不適用 ios中的注釋 單行注釋 注釋對 起到解釋說明的作用,注釋是給程式設計師看的,不參與程式執行 多行注釋 xcode快捷鍵 全選 cmd a 複製 cmd c 貼上 cmd v 設定 cmd 注釋 cmd 執行 cmd r 編譯 cmd b 進製轉化 資料型別...