【问题标题】:Multiple pointers to point to the same block多个指针指向同一个块
【发布时间】: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


【解决方案1】:

你为什么不像self.block = MACRO_NAME(method)那样做呢?

然后,

MACRO_NAME(method) Block method = ^

【讨论】:

  • 我希望 self.block 成为宏的一部分,它是一个幕后类型函数
【解决方案2】:

结果。我必须添加第三个块指针才能使其正常工作,谁知道,不管它工作,感谢您的帮助

【讨论】:

    猜你喜欢
    • 2014-08-13
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2019-05-10
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-10-17
    相关资源
    最近更新 更多