如何在 Objective-C 中创建一个 Swift 对象?

How to create a Swift object in Objective-C?

如果你这样定义swiftclass

@objc class Cat {

}

在swift中你可以做到

var c = Cat()

但是如何在 Objective-C 中创建 Cat 实例?

Subclassing NSObject 可以工作,因为你可以 "alloc-init" 但是我们可以在没有 subclassing Objective-C [=27= 的情况下实现吗? ]?

最直接的方法就是从NSObject子classCat。如果你不能这样做,你将需要制作一个 class 方法或一个 returns 一个 Cat.

的函数
@objc class Cat {
    class func create() -> Cat {
        return Cat()
    }
}
func CreateCat() -> Cat {
    return Cat()
}


Cat *cat = [Cat create];
Cat *cat = CreateCat();

在现代 objective-c 中,您可以像调用属性一样调用函数:

Swift:

class func create() -> Cat {
    return Cat()
}

目标-c:

Cat *cat = Cat.create;

您可以在虚拟类别中声明 +alloc(不需要实现它):

@interface Cat (Alloc)
+ (instancetype)alloc;
@end

然后你可以在上面使用常规的 alloc-init:

Cat *cat = [[Cat alloc] init];

无需更改 Swift 代码。