0
我在Mike Ash's post on ARC看到了這個函數的用法,並想玩弄它,但我找不到它所在的位置。我還沒有在objc/runtime
和類似文件中發現它,運行時文檔沒有提及它,谷歌搜索也沒有給我。它是什麼祕密功能?它在哪裏?我如何導入它?如何導入objc_retainAutoreleasedReturnValue?
我在Mike Ash's post on ARC看到了這個函數的用法,並想玩弄它,但我找不到它所在的位置。我還沒有在objc/runtime
和類似文件中發現它,運行時文檔沒有提及它,谷歌搜索也沒有給我。它是什麼祕密功能?它在哪裏?我如何導入它?如何導入objc_retainAutoreleasedReturnValue?
objc_retainAutoreleaseReturnValue()
從 ARC runtime support相關方法在/usr/lib/libobjc.A.dylib
定義,但在 公共的頭文件不被暴露。
當你下載http://www.opensource.apple.com/source/objc4/objc4-551.1/ 你會發現在「運行/ objc-internal.h」的原型,例如
// wraps objc_autorelease(objc_retain(obj)) in a useful way when used with return values
OBJC_EXPORT
id
objc_retainAutoreleaseReturnValue(id obj)
__OSX_AVAILABLE_STARTING(__MAC_10_7, __IPHONE_5_0);
但我不知道是否 它是安全地調用這些內部運行時函數在你的代碼中。他們中的一些人做了非常特別的事情(例如檢查呼叫者代碼 以檢查是否必須將對象放入自動釋放池中)。
你當然可以聲明extern函數。 –