iOS 中如何不通过继承,重写实例方法 ?


1.因为线上bug 不少,很多崩溃是因为insertOjbect nil 对象,但是这样就会导致崩溃出现在 framework 或者 dylib中,这样,就不容易定位代码了,我现在希望崩溃出现在app 代码中,这样,可以快速定位到崩溃位置

2.我现在希望重写这些方法,但是最好方法名不要改,也不要继承,不然工作量会很大。

3.有什么好的建议么 ?

ios8 ios6 ios7 ios9

节操能吃否 9 years, 10 months ago

重载 NSMutableArray 会很麻烦,由于它本身是由类簇组成,如果实现一个子类,需要实现很多个子类的方法。
详见: inheritance-issues-in-objective-c

Swizzle 的方式替换掉原有的方法也不是一个好的选择,因为你没办法看到它原有的实现,涉及到一些引用计数的调用,替换后在某些情况下会崩溃。

更好的方式是使用 Category,新增一个安全的插入方法,并且把所有的 insertOjbect 改为你新增的 my InsertOjbect 方法。

ridong answered 9 years, 10 months ago

Your Answer