gpt4 book ai didi

objective-c - 为什么 Objective-C block 不像其他 Objective-C 对象那样通过指针处理?

转载 作者:行者123 更新时间:2023-12-03 16:23:08 25 4
gpt4 key购买 nike

在使用 block 的代码中,您经常会看到如下声明:

typedef void(^Thunk)(void);
Thunk block1 = ^{NSLog(@"%d %p",i, &i);};

而不是

typedef void(^Thunk)(void);
Thunk *block1 = ^{NSLog(@"%d %p",i, &i);};

block 似乎是唯一直接处理而不是通过指针处理的 Objective-C 对象。为什么是这样?它们不是普通物体吗?

最佳答案

如果您想知道缺少的 *:在您的示例中,您输入了隐藏语法的 block 。您也可以对其他对象执行此操作:

typedef NSNumber *Number;
Number foo = @42;

将 block 分配给实际分配指针的变量时。

block 有点像 C 数组: block 文字是编译器创建的结构。 block 变量是幕后的指针。

关于objective-c - 为什么 Objective-C block 不像其他 Objective-C 对象那样通过指针处理?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21888337/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com