Object-C 迁移 Swift 4.x 5.x

作者: 加州旅馆1116 | 来源:发表于2019-07-11 12:05 被阅读0次

    前言:
    目前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)
    }
    

    转化失败提示:

    意思是您需要付钱了.png
    网页端转化链接:
    没有文件大小限制, 但是需要来回粘贴
    https://objectivec2swift.com/#/converter/code/
    转化示例

    总结:Swiftify还是很方便的, 有些的转化还是不能转化完全,需要手动修改,可以从工程中的基础类,工具类开始

    相关文章

      网友评论

        本文标题:Object-C 迁移 Swift 4.x 5.x

        本文链接:https://www.haomeiwen.com/subject/nvhkkctx.html