gpt4 book ai didi

objective-c - GCD 对象作为 Objective-C 对象

转载 作者:行者123 更新时间:2023-12-02 08:41:05 25 4
gpt4 key购买 nike

Grand Central Dispatch 对象据说在使用 Objective-C 编译器编译时表现得像 Objective-C 对象。但这对我来说有点不清楚。

事实上,Objective-C 对象是至少具有一个字段的结构:指向对象类结构的指针(isa 指针)。其他字段(如果有)对应于对象的 ivars。

那么,可以将 GCD 对象转换为第一个字段是指向 Objective-C 类结构的指针的结构吗?由于分派(dispatch)对象参与 ARC,编译器做了什么:它是否向对象发送 retainrelease 消息(如 objc_msgSend(obj, @selector(retain )),例如)还是生成 dispatch_object_retaindispatch_object_release 调用?我的意思是,GCD 对象是否以 [obj mesg] 方式响应 ObjC 消息?

最佳答案

GCD 对象是实际对象,编译器不会特殊对待它们。您可以将它们添加到 Cocoa 集合中,将它们放入调试器等...

但是,运行时确实为它们做了一些特殊处理。它们的 isa 指针指向调度 vtable 而不是常规的 ObjC 类。

关于objective-c - GCD 对象作为 Objective-C 对象,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16379560/

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