2015-10-25 29 views
0

我有以下宏:Objective-C的宏類型

#define MReachabilityReachable (((AppDelegate *)[UIApplication sharedApplication].delegate).reachableAzureMobileServices); 

的follwing工作正常。

BOOL internetReachable = MReachabilityReachable; 
if (internetReachable){ 
    // do someting 
} 

有沒有辦法將其改爲:

if (MReachabilityReachable){ 
    // do something 
} 

編譯器不接受第二個片段。

+0

什麼是編譯器錯誤? – rmaddy

+0

/Users/.../Documents/Developer/....../LoginViewController.m:208:33:它指向MReachabilityReachable –

回答

3

宏通過直接擴展表達式來工作,就像你寫的那樣。在你的情況下,你的問題可能是宏的末尾的;

讓我們顯示這一個簡單的宏觀

#define MReachabilityReachable ([appDelegate isReachable]); 

然後

BOOL internetReachable = MReachabilityReachable; 

擴大到

BOOL internetReachable = ([appDelegate isReachable]);; 

其作品,但

if (MReachabilityReachable) { 

膨脹到

if (([appDelegate isReachable]);) { 

其中;使得表達無效。

+0

的M的期望表達式哇,這很簡單,一直在使用我的解決方法去年。謝謝 –