gpt4 book ai didi

objective-c - 使用类指针有多安全?

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

将 Class 与 Objective-C 一起使用有多安全?

-> 我可以将类安全地存储在字典中然后进行比较吗

info[@"class"] = [User class];
...
if ([User class] == info[@"class"]) {

}

->类指针可以改变吗?

-> 是否被隔离为永不 Nil

最佳答案

类对象的行为类似于普通对象。它们可以保留、释放、作为参数和返回值传递、存储在 ivar 和属性中、存储在容器中——基本上,任何东西。

[SomeClassName class] 如果找不到这样的类,通常不会编译或链接,但它有可能编译但返回 nil,例如,当在不存在的操作系统上运行时提供该类,即比您的开发 SDK 版本更旧的操作系统版本。如果此类不存在,NSClassFromString 的返回值将为nil

类对象的指针值(标识)永远不会改变。每个类名只有一个类对象,您可以使用 C == 运算符来测试类指针是否是同一个类。 (可以使用+ isSubclassOfClass: 类方法来测试子类/父类(super class)关系)。

类对象永远不会被释放——您可以依赖它们存活(即不保留它们)直到进程完全终止。

以上内容适用于大多数应用程序;然而,有一个棘手的包加载案例(甚至更棘手的包卸载案例):

  • 加载包可能会向运行时添加类,例如导致 NSClassFromString 开始为他们的名字返回非零值。
  • 如果动态加载包导致类名冲突,运行时当前会记录一个投诉但会继续工作;没有具体说明在这种情况下到底发生了什么。
  • 从 Mac OS X 10.5 开始,可以卸载 bundle ,这会导致其类被删除。没有具体说明如果保留其中一些类会发生什么。

关于objective-c - 使用类指针有多安全?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27020661/

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