objective c 到 swift 的转换。 (#define 和弱)

objective c to swift conversion. (#define and weak)

我一直在将#define 和weak 从objective c 转换为swift。我尝试使用 objective c 到 swift 转换器,但我认为转换结果不正确。

#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) 设置为 self。但是,我不确定什么??应该是。

WeakRef 只是给你一个对某个对象的弱引用,而在 Swift 中,那只是 weak var foo = obj;它不需要实用方法。

WeakReturn不能在Swift中复制,因为Obj-C宏用于在函数中插入条件return。 Swift 中没有宏,您定义的 Swift WeakReturn 函数绝对没有任何作用——它 return 对象是否为 nil ;您所做的就是明确其中一个 return。我的猜测是这个宏被添加到 Obj-C 代码中是为了让一些懒惰的程序员免于编写 if obj == nil return;