How to create a Swift object in Objective-C?

萝らか妹 提交于 2019-12-06 02:44:01

The most direct way is to subclass Cat from NSObject. If you can't do that, you will need to make a class method or a function that returns a Cat.

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


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

In modern objective-c you can call functions like they were properties:

Swift:

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

Obj-c:

Cat *cat = Cat.create;

You can declare +alloc in a dummy category (don't need to implement it):

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

and then you can use regular alloc-init on it:

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

all without needing to change the Swift code.

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!