目录

OC优缺点以及常见bug

objc优点:

  1. Cateogies : 非常实用的扩展机制,可以很方便的为一个已有的类添加属性或者方法,而不需要笨拙的去继承他
  2. Posing : 可以让一个类的对象动态的以其他类行为去执行,也许可以理解成动态replace所有的method(不确定是否可以这么理解)
  3. 动态识别,比较常见的动态语言的特性,涉及的点就多了,举个简单的例子,判断一个对象是否是某个类的成员
  4. 指针计算
  5. 弹性讯息传递 : 方法(method)的动态处理,譬如当你调用一个没有的方法的时候,系统将是再运行时跑出异常而不是编译时给出错误
  6. 不是一个过度复杂的 C 衍生语言
  7. Objective-C 与 C++ 可混合编程, 直接改.m文件类型名即可

缺点:

  1. 不支持命名空间 : 写过c#等其他语言的应该比较清楚,可以通过命名空间将相同名字的类进行分类,而objc中不得不通过前缀进行区分,这也是为什么苹果的类库都有UIXXX NSXXX等统一前缀了。
  2. 不支持运算符重载
  3. 不支持多重继承
  4. 使用动态运行时类型,所有的方法都是函数调用,所以很多编译时优化方法都用不到。(如内联函数等),性能低劣。

OC比较常见的代码bug

比较常见的崩溃基本都源于代码bug,比如数组越界、插空、空引用、引用未定义方法、多线程安全性、访问野指针、发送未实现的selector等。

调试技巧

  1. 打印层次结构
  2. 条件断点(满足一定条件)在断点处调  add edit breakPoint  
  3. 全局断点  add Exception breakPoint
  4. 静态分析 Analyzs
  5. profile
  6. 编译时静态检测