从Objective-C中的块返回外部方法的结果

时间:2013-10-25 15:16:22

标签: ios objective-c objective-c-blocks

我有一个在里面创建一个块的方法。是否可以从此块返回方法的结果?类似的东西:

- (id)myFunction {
     //some code here
     BlockType myBlock = ^{
           //some other code here
           return someObject; //is it possible to return something for myFunction?
     };
     [someOtherObject methodWithBlock: myBlock];
}

1 个答案:

答案 0 :(得分:1)

块可以有返回类型。这是一个例子。

首先定义块类型(可选,但方便)

typedef NSString * (^BlockType)(NSString *name);
        ^^^^^^^^^^   ^^^^^^^^^  ^^^^^^^^^^^^^^
       return type   type name    parameters

然后你可以实例化一个像

这样的块
BlockType aBlock = ^ NSString * (NSString *name){
    return [@"Hello " stringByAppendingString:name];
};

并使用它

NSString *salutation = aBlock(@"Nikita");
NSLog(@"%@", salutation); // => Hello Nikita