如何在 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 代码。
如果你这样定义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 代码。