cfi*_*her 12 cocoa objective-c swift
在Objective C中Swift添加categoryover 时,是否可以扩展所有现有对象NSObject?
根据这篇文章,所有Swift对象都继承自SwiftObject该类,但我无法为其添加扩展.
这有什么解决方案吗?
Rob*_*ier 11
不.Swift对象实际上并不从任何根基类继承.编译器可以插入一个作为实现细节,但语言没有这个.
解决方案是一个函数,通常是泛型函数,而不是方法.适用于"各种对象"的东西并没有真正封装.很少有动作适用于宇宙中每一个可以想象的事物.但是函数可以绝对地映射到任何其他东西,所以这里是一个更好的工具.
就像一个注释,并非所有对象都从这NSObject两个对象继承,并且它不是语言要求.但是大多数人都这么认为你是正确的.看看NSProxy非NSObject树的顶部(它实现NSObject协议,但不从NSObject类继承).这就是为什么id不一样的原因NSObject*.
关于关联对象的问题,这是内置的:
import Foundation
class 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))
Run Code Online (Sandbox Code Playgroud)
这是你想要创造的吗?注意,这objc_setAssociatedObject也是ObjC中的一个函数,而不是一个方法.
| 归档时间: |
|
| 查看次数: |
1235 次 |
| 最近记录: |