Objective-C 宏类型

Objective-C macro type

我有以下宏:

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

下面的工作正常。

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

有没有办法改成:

if (MReachabilityReachable){
   // do something
}

编译器不接受第二个片段。

宏通过直接扩展您编写的表达式来工作。在您的情况下,您的问题可能是宏末尾的 ;

让我们用一个更简单的宏来展示这个

#define MReachabilityReachable ([appDelegate isReachable]);

然后

BOOL internetReachable = MReachabilityReachable;

扩展为

BOOL internetReachable = ([appDelegate isReachable]);;

有效但是

if (MReachabilityReachable) {

扩展为

if (([appDelegate isReachable]);) {

其中 ; 使表达式无效。