前言:
目前ios 开发swift语言开发势在必行, swift语言在国外的使用率已经过半, 纯OC开发者仅剩15%, https://mp.weixin.qq.com/s/0YBb9RKtvhJKLi5E9-8Cng 加之SwiftUI的推出后,可以实现苹果设备间的跨平台开发,以及类似SwiftWebUI的尝试
目前应该有不少的项目还是处于OC Swift混编的状态, 那么如何将这部分老的OC代码迁移至Swift版本?
1:重写(量大的话不太现实), 比较耗费精力和时间
2:使用工具(本片文章主要推荐的)
Swiftify
xcode可直接下载安装, <Swiftify for Xcode>下载安装后需要简单的配置方可使用:
1:系统偏好设置>"扩展"中为Xcode Source Editor(Xcode源码编辑器)选择"Swiftyfy for Xcode"
2: 打开Xcode > Editor > 菜单下看到新的"Swiftify"子菜单
这里有三个选项:
1: Convert Selection to Swift(将选中的代码块转化成Swift)
2:Convert File to Swift(将文件转化成swift语言)
3:Paste as Swift (以Swift方式粘贴代码)
不同注册用户代码转化有大小限制:
未注册用户: 1KB/每次 大概也就100代码不到吧
注册未付费用户: 2KB/每次
付费用户:1G/每次 年转化量 <100G
比较推荐的方式:
1: 创建对应的.swift文件
2: 将 .h .m中代码copy进.swift中
OC代码:
- (NSInteger)zp_TextAlignment{
NSNumber * number = objc_getAssociatedObject(self,@selector(zp_TextAlignment));
return number.integerValue;
}
- (void)setZp_TextAlignment:(NSInteger)TextAlignment{
objc_setAssociatedObject(self, @selector(zp_TextAlignment),
@(TextAlignment), OBJC_ASSOCIATION_COPY_NONATOMIC);
}
对应的swift代码
@objc func zp_TextAlignment() -> Int {
let number = objc_getAssociatedObject(self, #selector(zp_TextAlignment))
return number.intValue
}
func setZp_TextAlignment(_ TextAlignment: Int) {
objc_setAssociatedObject(self, #selector(zp_TextAlignment), NSNumber(value: TextAlignment),
objc_AssociationPolicy.OBJC_ASSOCIATION_COPY_NONATOMIC)
}
转化失败提示:
网页端转化链接:
没有文件大小限制, 但是需要来回粘贴
https://objectivec2swift.com/#/converter/code/
转化示例
总结:Swiftify还是很方便的, 有些的转化还是不能转化完全,需要手动修改,可以从工程中的基础类,工具类开始
网友评论