objective-c – 扩展所有Swift对象

objective-c – 扩展所有Swift对象,第1张

概述在Objective C中添加NSObject类别时,是否可以扩展所有现有的 Swift对象? 根据这个article,所有Swift对象继承自SwiftObject类,但是我不能添加一个扩展. 有没有解决这个问题? 不,Swift对象实际上并不继承任何根基类.编译器可以插入一个作为实现细节,但是语言没有这个. 解决方案是一个函数,通常是一个通用函数,而不是一个方法.适用于“各种对象”的东西并没有 在Objective C中添加NSObject类别时,是否可以扩展所有现有的 Swift对象?

根据这个article,所有Swift对象继承自SwiftObject类,但是我不能添加一个扩展.

有没有解决这个问题?

解决方法 不,Swift对象实际上并不继承任何根基类.编译器可以插入一个作为实现细节,但是语言没有这个.

解决方案是一个函数,通常是一个通用函数,而不是一个方法.适用于“各种对象”的东西并没有被真正的封装.宇宙中每一个可想到的事物都有很少的动作.但功能绝对可以映射到任何东西,所以在这里也是一个更好的工具.

就像一个注释,并不是所有的对象都继承自NSObject,它不是一个语言的要求.但是绝大多数人都是正确的.看一下非NSObject树的顶部的nsproxy(它实现了NSObject协议,但不会从NSObject类继承).这就是为什么ID与NSObject *不一样.

关于关联对象的问题,这是内置的:

import Foundationclass Thing { }let thing = Thing()var MyKey: Character = "0"objc_setAssociatedobject(thing,&MyKey,"I'm a value!",objc_AssociationPolicy(OBJC_ASSOCIATION_copY))println(objc_getAssociatedobject(thing,&MyKey))

这是你想要创建的吗?请注意,objc_setAssociatedobject也是ObjC中的一个函数,而不是一种方法.

总结

以上是内存溢出为你收集整理的objective-c – 扩展所有Swift对象全部内容,希望文章能够帮你解决objective-c – 扩展所有Swift对象所遇到的程序开发问题。

如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。

欢迎分享,转载请注明来源:内存溢出

原文地址:https://54852.com/web/1026783.html

(0)
打赏 微信扫一扫微信扫一扫 支付宝扫一扫支付宝扫一扫
上一篇 2022-05-23
下一篇2022-05-23

发表评论

登录后才能评论

评论列表(0条)

    保存