gpt4 book ai didi

iphone - 术语 "opaque type"在 "CFBundleRef opaque type"的上下文中意味着什么?

转载 作者:太空狗 更新时间:2023-10-30 03:09:42 26 4
gpt4 key购买 nike

有人对什么是“不透明类型”有很好的解释吗?我在 CFBundleRef 的上下文中看到了这个术语,他们说:“CFBundleRef 不透明类型”。那是只读类型吗?

最佳答案

“不透明类型”是您没有structclass 的完整定义的类型。在 C、C++ 和 Objective-C 中,您可以使用前向声明告诉编译器稍后将定义一个类型:

// forward declaration of struct in C, C++ and Objective-C
struct Foo;

// forward declaration of class in C++:
class Bar;

// forward declaration of class in Objective-C:
@class Baz;

编译器没有足够的信息让您可以直接使用 structclass 做任何事情,除了声明指向它的指针,但这通常是您需要做的全部做。这允许库和框架创建者隐藏实现细节。然后,库或框架的用户调用辅助函数来创建、操作和销毁前向声明的 structclass 的实例。例如,框架创建者可以为 struct Foo 创建这些函数:

struct Foo *createFoo(void);
void addNumberToFoo(struct Foo *foo, int number);
void destroyFoo(struct Foo *foo);

作为 Core Foundation 框架的一部分,Apple 为 C 程序员提供了常见的 Objective-C 类,如 NSStringNSArrayNSBundle不透明类型。 C 程序员使用指针和辅助函数来创建、操作和销毁这些 Objective-C 类的实例。 Apple 称之为“免费桥接”。它们遵循共同的命名约定:“CF”前缀+类名+“Ref”后缀,其中“CF”代表“Core Foundation”,“Ref”是“Reference”的缩写,意思是它是一个指针。

关于iphone - 术语 "opaque type"在 "CFBundleRef opaque type"的上下文中意味着什么?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/735131/

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