OC优缺点以及常见bug
objc优点:
- Cateogies : 非常实用的扩展机制,可以很方便的为一个已有的类添加属性或者方法,而不需要笨拙的去继承他
- Posing : 可以让一个类的对象动态的以其他类行为去执行,也许可以理解成动态replace所有的method(不确定是否可以这么理解)
- 动态识别,比较常见的动态语言的特性,涉及的点就多了,举个简单的例子,判断一个对象是否是某个类的成员
- 指针计算
- 弹性讯息传递 : 方法(method)的动态处理,譬如当你调用一个没有的方法的时候,系统将是再运行时跑出异常而不是编译时给出错误
- 不是一个过度复杂的 C 衍生语言
- Objective-C 与 C++ 可混合编程, 直接改.m文件类型名即可
缺点:
- 不支持命名空间 : 写过c#等其他语言的应该比较清楚,可以通过命名空间将相同名字的类进行分类,而objc中不得不通过前缀进行区分,这也是为什么苹果的类库都有UIXXX NSXXX等统一前缀了。
- 不支持运算符重载
- 不支持多重继承
- 使用动态运行时类型,所有的方法都是函数调用,所以很多编译时优化方法都用不到。(如内联函数等),性能低劣。
OC比较常见的代码bug
比较常见的崩溃基本都源于代码bug,比如数组越界、插空、空引用、引用未定义方法、多线程安全性、访问野指针、发送未实现的selector等。
调试技巧
- 打印层次结构
- 条件断点(满足一定条件)在断点处调 add edit breakPoint
- 全局断点 add Exception breakPoint
- 静态分析 Analyzs
- profile
- 编译时静态检测
本文是原创文章,采用 CC BY-NC-ND 4.0 协议,完整转载请注明来自 风屋
评论
匿名评论
隐私政策
你无需删除空行,直接评论以获取最佳展示效果