Objective-c代码块作为嵌套方法

时间:2014-01-24 20:02:10

标签: objective-c

是否可以在Obj-c中使用嵌套方法。我想要做的是在初始化NSArray

时创建一个特定的对象
NSArray array = @[
^{ NSViewController someObject = ... 

   someObject.someObjectProperty = @"Bla";

   return someObject}, 

^{ NSViewController someOtherObject = ... 

   someOtherObject.someOtherObjectProperty = @"Bla Bla";

   return someObject}, 
];

数组包含__NSGlobalBlock__,我试图获取[someObject, someOtherObject]

数组返回一堆ViewControllers,我需要在每个上设置不同的属性。

由于

2 个答案:

答案 0 :(得分:2)

代码块不仅仅是“将来某个时候执行”。他们可以以这种方式使用,但它们当然可以按照你建议的方式使用;他们是一个lambda。当然,你的语法都错了,因为你描述块,而不是调用它。 (虽然包含块的数组也非常合理。)

答案 1 :(得分:1)

如果我理解正确,您需要创建一个本地块并将其返回值直接添加到数组中。虽然它不是主流方法,但它有可能:

NSArray *array = @[
  (id)^{
        id someObject = ...
        someObject.aProp = @"Bla"; 
        return someObject;
        }(), // here you immediately execute the local block
  (id)^{
        id someObject = ...
        someObject.aProp = @"Bla"; 
        return someObject;
        }()
];