[問題] preprocessor macros
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)
推
08/22 11:57, , 1F
08/22 11:57, 1F
→
08/22 15:00, , 2F
08/22 15:00, 2F
→
08/22 15:00, , 3F
08/22 15:00, 3F
推
08/22 15:04, , 4F
08/22 15:04, 4F
謝謝 一時筆誤
最主要是因為在 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)
→
08/23 00:11, , 5F
08/23 00:11, 5F
→
08/23 00:11, , 6F
08/23 00:11, 6F
→
08/23 00:31, , 7F
08/23 00:31, 7F
→
08/23 00:42, , 8F
08/23 00:42, 8F
→
08/23 00:47, , 9F
08/23 00:47, 9F
→
08/23 00:48, , 10F
08/23 00:48, 10F