我应该使用委托进行块返回吗?

时间:2014-02-10 13:35:48

标签: objective-c

我有一些从服务器获取数据的块。我可以看到在尝试从该块返回数组时出现错误。问题是,什么是正确的:

  1. 使用块中的委托给使用它的其他类
  2. 不要使用block,而是在完成时调用的选择器方法,并且我给它填充并返回的参数。

    [query findObjectsInBackgroundWithBlock:^(NSArray *objects, NSError *error)
         {
             for(PFObject *object in objects)
             {    
                 PFObject *user = [object objectForKey:@"userId"];
    
                 //can't return value to other class here ..
            }
    
         }];
    
  3. 我应该在这里使用代表吗? (有可能吗?)

2 个答案:

答案 0 :(得分:0)

您可以简单地使用__block前缀声明一个可在块中分配的变量或属性,然后您可以在块中为其分配一个值,并在您需要的任何地方使用。

示例:

__block NSString *string;

答案 1 :(得分:0)

典型的Cocoa方法是使用带回调的委托。如果您使用选择器,您仍然需要传递块选择器所属对象的实例,并且您将失去一些编译时安全性。