Object-C编译时和运行时

我们平常说的编译时和运行时指的是什么呢?

今天对于这个问题现在有一点更深刻的理解,记录一下。

今天遇到了个莫名其妙的bug。两套一样的代码,其中一个运行没问题,另一个运行的时候出现崩溃现象而且是必现。

后来发现原因,Build Phases没有将mrc代码转成arc。

我们习惯于编译的时候看出现了什么问题而去直接mrc-arc代码互相转化(-fno-objc-arc,-fobjc-arc),但不是所有的代码问题都会在这个时候全给你暴露出来,编译的时候只是看程序有没有什么语法错误之类的,这个时候如果不是arc中使用retain这种问题,也不会给你报错,只有运行时才会调用具体的方法,这时就会出现问题,比如过度释放引起崩溃。所以啊,严谨些~

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • iOS内存管理 概述 什么是内存管理 应用程序内存管理是在程序运行时分配内存(比如创建一个对象,会增加内存占用)与...
    蚊香酱阅读 11,007评论 8 119
  • 自动引用计数(ARC)是一项编译器功能,可以给Objective-C提供自动内存管理的能力。ARC使得程序员能专注...
    hlwz5735阅读 5,603评论 0 3
  • 内存管理是程序在运行时分配内存、使用内存,并在程序完成时释放内存的过程。在Objective-C中,也被看作是在众...
    蹲瓜阅读 8,439评论 1 8
  • 内存管理 简述OC中内存管理机制。与retain配对使用的方法是dealloc还是release,为什么?需要与a...
    丶逐渐阅读 6,052评论 1 16
  • 苏锦年,是他在简书里的名字,但我还是喜欢叫他冬瓜。 刚开始与他相识,是在某杂志的QQ群里,我刚进群的时候,一个人也...
    甜甜的草莓阅读 4,388评论 35 23