将参数传递给存储在块数组中的块

时间:2012-11-26 03:16:40

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

我在界面上声明了这个

void (^ soc)(NSString *type, BOOL configured);

@property (nonatomic, assign) BOOL serviceOK;

然后在.m的方法中我有这个:

soc = ^(NSString *type, BOOL configured){
    // ...
};

// other blocks defined here

然后这个:

NSMutableArray *arrayBlocks = [[NSMutableArray alloc] initWithObjects:
                               [block1 copy],
                               [soc(typeOne, self.serviceOK) copy],
                               [block3 copy],
                               [block4 copy],
                               nil];

我在soc行上有一条错误消息坏接收器类型无效(什么???)

如果我只是运行:

soc(typeOne, self.serviceOK);

它工作正常,但如果我将它包含在阵列中就会抱怨。任何帮助表示赞赏。

2 个答案:

答案 0 :(得分:2)

如果要添加块的副本,请添加:

[soc copy],

到数组。你要做的是添加一个调用块的结果的副本。

答案 1 :(得分:1)

soc(typeOne, self.serviceOK)

执行块。因为它什么也没有返回,所以没有任何东西可以将复制消息发送到阵列并放入阵列。