我被困在#define和从目标C转换为swift的弱弱。我试图使用目标C快速转换器,但我认为转换的结果不正确。
#define WeakRef(__obj) __weak typeof(self) __obj = self
#define WeakReturn(__obj) if(__obj ==nil)return;
WeakRef(weakSelf);
WeakReturn(weakSelf);
在第二,第三和第三行,我认为这应该是Swift
中的类似的东西func WeakReturn(obj: Any?) {
if obj == nil {
return
}
}
WeakRef(self)
WeakReturn(self)
在我对第一行的猜测中,它首先检查了typeof(self) == ??
的状况。如果为真,则将指针(__OBJ(设置为自我。但是,我不确定什么?应该是。
WeakRef
只是为您提供了对某些对象的薄弱引用,而在swift中,只是 weak var foo = obj
;它不需要实用方法。
WeakReturn
不能在Swift中复制,因为OBJ-C宏用于在函数中插入条件返回。Swift中没有宏,您定义的Swift WeakReturn
函数绝对没有任何作用 - 它是否返回对象是否为nil
;您所做的只是将这些退货之一明确。我的猜测是,将此宏添加到OBJ-C代码中,以节省一些懒惰程序员,从编写if obj == nil return;
中。