– >我可以将Class safe存储在字典中而不是比较
info[@"class"] = [User class];...if ([User class] == info[@"class"]) {}
– >类指针可以改变吗?
– >是否被隔离为永不为零?
解决方法 类对象的行为与普通对象相似.它们可以保留,释放,作为参数和返回值传递,存储在ivars和属性中,存储在容器中 – 基本上,任何东西.如果找不到这样的类,[SomeClassname类]通常不会编译或链接,但是它可以编译但返回nil,例如,当在没有该类可用的OS上运行时,即比旧的OS版本更多您的开发SDK版本.如果此类不存在,NSClassFromString的返回值将为nil.
类对象的指针值(标识)永远不会改变.每个类名只有一个类对象,您可以使用C ==运算符来测试类指针是否是同一个类. (可以使用isSubclassOfClass:class方法测试子类/超类关系).
类对象永远不会被释放 – 你可以依赖它们活着(即不保留它们),直到进程完全终止.
以上情况适用于大多数应用;然而,有一个棘手的捆绑加载案例(甚至更麻烦的捆绑卸载案例):
>加载包可以向运行时添加类,例如导致NSClassFromString开始为其名称返回非零值.>如果动态加载bundle导致类名冲突,则运行时当前会记录投诉但仍在继续工作;没有具体说明在这种情况下究竟发生了什么.>从Mac OS X 10.5开始,可以卸载捆绑包,从而导致其类被删除.没有说明如果保留了其中一些类会发生什么.
总结以上是内存溢出为你收集整理的objective-c – 使用Class指针有多安全?全部内容,希望文章能够帮你解决objective-c – 使用Class指针有多安全?所遇到的程序开发问题。
如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)