我们平常说的编译时和运行时指的是什么呢?
今天对于这个问题现在有一点更深刻的理解,记录一下。
今天遇到了个莫名其妙的bug。两套一样的代码,其中一个运行没问题,另一个运行的时候出现崩溃现象而且是必现。
后来发现原因,Build Phases没有将mrc代码转成arc。
我们习惯于编译的时候看出现了什么问题而去直接mrc-arc代码互相转化(-fno-objc-arc,-fobjc-arc),但不是所有的代码问题都会在这个时候全给你暴露出来,编译的时候只是看程序有没有什么语法错误之类的,这个时候如果不是arc中使用retain这种问题,也不会给你报错,只有运行时才会调用具体的方法,这时就会出现问题,比如过度释放引起崩溃。所以啊,严谨些~