美文网首页iOS Developer程序员iOS开发
由type类型初始化引起的OC和Swift的博弈

由type类型初始化引起的OC和Swift的博弈

作者: 永恒指针 | 来源:发表于2017-08-16 16:38 被阅读0次

    今天碰到一个小问题. 但是在排查的时候对比了一下OC和Swift的情况. 感觉很有必要和大家分享一下.理解好底层思想, 开发起来更顺手. 感谢@yue博客 的讨论和分享.
    接下来是正文:
    在type判断的时候. 总是走第一个方法. 经过排查, 发现是类型赋值的问题.

    Snip20170816_12.png

    在OC里面, 声明变量都会有一个默认值,0或者nil,NSInteger i;i的值为0等价于NO和nil. 在这里只走第一个方法, 原因就是type没有成功赋值.

    那么开始排查.

    原因在于, 先走了model方法.(type是写在此方法里面的). 然后type才赋值.
    所以这个时候, 需要把这两行代码调换一下顺序. 先进行type的赋值, 再走modal方法. 这样就可以把type值传递过去了.

    其实像这个问题,swift里就不会出现,因为OC里声明的变量都会有一个默认值,0或者nil,NSInteger i;i的值为0等价于NO和nil.

    swift的枚举和OC里的不太一样,需要有构造方法,否则为nil,nil和默认值不等价


    swift就很严谨, 没有初始化,编译不通过. 在错误的初级就发现, 不会出现OC运行之后还要找在哪里报错. 这一点swift赢.

    初始化不正确,运行时报错


    可选类型,初始化失败,然后执行default语句.

    通过以上的对比, 我们发现swift很严谨, 很多地方修复了OC的不足. 但是.....由于swift还不太稳定, 想想踩过的那些坑, 现在在开发中还是没有应用太多swift.
    在这一点OC赢.

    未来将会是swift的天下, 毕竟苹果主推的语言, 相信之后会越来越好. 大家在学习swift和OC有那些心得, 也可以在留言区反馈. 博主会一一解答.

    相关文章

      网友评论

        本文标题:由type类型初始化引起的OC和Swift的博弈

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