If you define a swift class like this
@objc class Cat {
}
In swift you can just do
var c = Cat()
But how
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();
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.
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;