xfx*_*xfx 4 objective-c ios swift
我有一个用Objective-C编写的Model类,它假设是由子类继承的.有一种方法:
- (id)deepcopy {
id newModel = [[[self class] alloc] init];
newModel.id = self.id;
// do something
return newModel;
}
Run Code Online (Sandbox Code Playgroud)
子类应该用以下内容覆盖它:
- (id)deepcopy {
id newModel = [super deepcopy];
// something else
return newModel;
}
Run Code Online (Sandbox Code Playgroud)
关键是[[[self class] alloc] init],它将基于实际的类来实例化一个对象.最近我尝试将这个项目升级到Swift,但是找不到在Swift中做同样事情的方法.
我怎样才能做到这一点?
我想你要找的是dynamicType:
func deepcopy() -> Self {
let newModel = self.dynamicType.init()
return newModel
}
Run Code Online (Sandbox Code Playgroud)
更新至于Swift 3,这似乎有效:
func deepcopy() -> Self {
let newModel = type(of: self).init()
return newModel
}
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
3523 次 |
| 最近记录: |