为addObserverForName创建块:object:queue:usingBlock:

时间:2014-01-08 04:43:08

标签: ios objective-c callback block

有人可以告诉我如何为包含多个参数的方法创建块,因为我只知道如何为单个参数方法创建块。 addObserverForName:对象:队列:usingBlock:

2 个答案:

答案 0 :(得分:1)

我所做的是发送一个实际上是NSDictionary的参数...所以我可以在一个参数中发送大量信息。 GL HF

答案 1 :(得分:0)

通知中心方法addObserverForName:object:queue:usingBlock:具有被调用的块的固定块签名。您无法向块中添加其他参数。

然而,这通常不是问题。块继承了定义它们的范围。如果从对象的实例方法将块传递到通知中心,则进行调用的对象的所有实例变量和属性都可用,实际方法中的局部变量也是可用的,这使得addObserverForName:object:queue: usingBlock:call。

系统会玩一些游戏来实现这一目标。在块传递时,局部变量从堆栈复制到堆。

然而,在一个区块中提及“自我”通常是一个坏主意。这可能导致保留对象(self)并创建保留周期。在这种情况下,我通常创建一个局部变量“我自己”,指向自己并在方法的开头设置它。