看板 MacDev 關於我們 聯絡資訊
google 一直找不到 有哪些環境變數的列表 目前我只知道 DEBUG 所以可以根據是否在 DEBUG 下來寫 code 如 #if DEBUG #define TEST_MODEL_ENABLE YES #else #define TEST_MODEL_ENABLE NO #end /// #if TEST_MODEL_ENABLE NSLog(@"using test model"); #endif 可是現在想找 ARC 是否有 enable 不知道該用哪個環境變數來判斷 有 Apple 提供的列表嗎? -- ※ 發信站: 批踢踢實業坊(ptt.cc) ◆ From: 118.163.125.199 ※ 編輯: leondemon 來自: 118.163.125.199 (08/22 11:13)
kiii210:好像是 #if __has_feature(objc_arc) 08/22 11:57
yuanruo:去找有支援ARC的Open Source 然後用non ARC執行 08/22 15:00
yuanruo:如果他有提示 那就照抄就好~ 08/22 15:00
tentenlee:是#endif吧 不只是#end 08/22 15:04
謝謝 一時筆誤 最主要是因為在 block 中用 `self` 或是 ivar 會導致 `self` 被 retain 因此需要先設一個區域變數 並轉成 weak 但在 ARC 或是 non-ARC (MRC) 中的 modifier不太一樣 因此我想要寫一個簡單的 macro 方便使用 如: ======= #if ARC // 如果有 ARC (但我不確定是否是用`ARC`來判斷) #define declareWeakSelf() __weak typeof(self) weakSelf = self // 用__weak #else #define declareWeakSelf() __block typeof(self) weakSelf = self // 用__block #endif ======= 這樣就可以在 block 前用 declareWeakSelf() 來快速宣告 weakSelf,例如: ======= declareWeakSelf(); [array sortedArrayUsingComparator:^NSComparisonResult(id obj1, id obj2){ [weakSelf compare:obj1 with:obj2]; // weakSelf 不會被 retain }]; ======= 想多知道一些開發上的 preprocessor macros 這樣有時候寫 code 會比較方便 只是一直找不到... :( ※ 編輯: leondemon 來自: 114.198.184.235 (08/22 23:54)
uranusjr:超多, 自己查 orz 08/23 00:11
leondemon:感謝 Orz (好像沒有`DEBUG`?) 08/23 00:31
uranusjr:DEBUG 是 Xcode 在 compile 的時候設定的, 不是 compiler 08/23 00:42
uranusjr:的功能 http://d.pr/i/PlBW 這些去看 project 設定就可 08/23 00:47
uranusjr:以知道什麼狀況有哪些 flags (基本上都和 scheme 有關) 08/23 00:48