【发布时间】:2013-08-23 04:30:04
【问题描述】:
我在处理块和宏时遇到了一点问题,我希望有 2 个块指针指向正在创建的同一个块。
举个例子
Block a; //Block is a typedef
Block b;
a=b=^{int craziness=0};
到目前为止,a 和 b 是 2 个不同的块,我希望它们是同一个块以使我的宏更容易
我的宏是MACRO_NAME(method) Block method = self.block =^
Self.block 有一种管理列表中块的方法,所以我需要代码遵循我的方式,因为在宏之后会遵循我的代码,所以我希望结果看起来像这样
(void) somemethod
{
MACRO_NAME(newBlock)
{
Int crazyness = 0;
};
}
任何想法将不胜感激
编辑:作为旁注,我知道我可以使用 MACRO_NAME(method,block) 并让它工作,但它让我的代码看起来很难看。
【问题讨论】:
-
您的
block属性可能会在设置块时获取它的副本。这将解释两个不同的指针。执行代码仍然是相同的。不过,总的来说,我真的不明白您要做什么,或者为什么要使用宏来执行此操作。你能详细说明一下吗? -
我正在尝试将我需要保留的所有块放入一个数组中,并且我需要使用弱引用来引用该块。这样,当我需要删除 self 时,我会删除数组,这会杀死所有块指针并允许 self 释放。这是为了避免块内需要的weakself strongself步骤以避免循环保留
-
“截至目前,a 和 b 是 2 个不同的块”不,不是。
标签: iphone objective-c macros block