美文网首页
Swift项目 -- 问题小集

Swift项目 -- 问题小集

作者: 叫我困兽 | 来源:发表于2016-08-25 15:53 被阅读66次

    前一段时间工作比较清闲,就看了《The Swift Programming Language 中文版》(英语不好,中文版将就吧)。
    第一次正式的从头开始看,过了一遍。觉得还是项目实践才能快速上手,就想着复刻公司的项目。因为接口什么的都有,也不用自己想到哪做到哪(如果保密比较严,最好跟领导说一下)。


    在此记录遇到的问题:

    1.为什么不再需要导入.h文件了?
    首先是没有了😂然后我去搜了一下,然而没有搜到。问个大神,他给我发了段代码 代码大家自己敲吧

    然后我似乎明白了什么!OC里面导入.h文件,会根据这个文件,把.h的接口、数据结构和属性的声明暴露出来。Swfit也是一样的,但是需要你自己写命名空间了,对于NSClassFromString方法。


    2.Swift没有宏定义了
    The Apple docs state that:Declare simple macros as global constants, and translated complex macros into functions.(苹果的文档指出:声明简单的宏作为全局常量,并翻译复杂的宏成功能。)
    因为不需要了呗,Swift可能就没有引进预处理指令的。所以你只能使用全局函数或者全局变量来替代宏定义了。宏从工程角度说带来方便的同时也会引入不可预知的风险。
    广告时间😄 Swift常用全局函数及者全局变量
    参考:Macros in Swift?为什么swift不支持宏定义?


    以下出现swift3.0的变动会比较多,留作记录😀有需要请自取

    3.使用xib自定义View
    在swift2.3中,创建xib视图代码为

        func loadViewFromNib() -> UIView {
            let bundle = NSBundle(forClass: self.dynamicType)
            let nib = UINib(nibName: String(self.dynamicType), bundle: bundle)
            let view = nib.instantiateWithOwner(self, options: nil)[0] as! UIView
            return view
        }
    

    但在swift3.0中,OC的身影越来越少,很多类型都不在使用NS系列,改为

        func loadViewFromNib() -> UIView {
            let bundle = Bundle(for: type(of: self))
            let nib = UINib(nibName: String(describing: type(of: self)), bundle: bundle)
            let view = nib.instantiate(withOwner: self, options: nil)[0] as! UIView
            return view
        }
    

    这里还要注意的是,在获取对象类型时,object.dynamicType方法改为了type(of: object)。再根据类名创建方法时,也最好使用type(of: object)以避免输入的错误带来的创建失败问题。

    相关文章

      网友评论

          本文标题:Swift项目 -- 问题小集

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