Objective-C块语法

时间:2012-09-21 07:13:45

标签: objective-c syntax objective-c-blocks

Obj-C块是我刚刚第一次使用的东西。我试图理解以下块语法:

在头文件中:

@property (nonatomic, copy) void (^completionBlock)(id obj, NSError *err);

在主文件中:

-(void)something{

id rootObject = nil;

// do something so rootObject is hopefully not nil

    if([self completionBlock])
        [self completionBlock](rootObject, nil); // What is this syntax referred to as?
}

我感谢您的帮助!

2 个答案:

答案 0 :(得分:5)

块是对象。

在你的方法中,你正在检查块是不是nil然后你正在调用它传递两个必需的参数......

请记住,块的调用方式与c函数相同......

下面我将声明分成两部分让你更好地理解:

[self completionBlock]  //The property getter is called to retrieve the block object
   (rootObject, nil);   //The two required arguments are passed to the block object calling it

答案 1 :(得分:2)

它是一个块属性,你可以在运行时设置一个块。

以下是设置

的语法

因为它是void类型,所以在类中你可以通过代码

设置方法
self.completionBlock = ^(id aID, NSError *err){
    //do something here using id aID and NSError err
};

使用以下代码,您可以调用之前设置的方法/块。

if([self completionBlock])//only a check to see if you have set it or not
{
        [self completionBlock](aID, nil);//calling
}