iOS Developer程序员iOS开发

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

2017-08-16  本文已影响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有那些心得, 也可以在留言区反馈. 博主会一一解答.

上一篇下一篇

猜你喜欢

热点阅读