美文网首页
2018-04-19 @property(copy)NSMuta

2018-04-19 @property(copy)NSMuta

作者: 龙之天下 | 来源:发表于2018-04-19 14:52 被阅读13次

最近面试,遇到一些问题?

问题1:

@property(copy)NSMutableArray *array 这种写法会出现什么问题?

   用copy来修饰NSMutableArray的类型创建属性

    self.mutableArray =[NSMutableArray arrayWithObjects:@"1",@"2",nil];

   运行的时候崩溃到下面这句代码

  //       [self.mutableArray addObject:@"5”];

崩溃结果:

   -[__NSArrayI addObject:]: unrecognized selector sent to instance xxxx

总结:被copy修饰的NSMutableArray类型的对象

           编译器期间并不会报任何错误

           在运行时会报错---调用NSMutableArray里面的方法(比如:addObject:方法),此时NSMutableArray类型转化成NSArray类型

           所以报错:unrecognized selector

那么问题来了,为什么创建没有出问题呢?报错的原因?

NSMutableArray 继承于NSArray,创建的方法调用NSArray里面的方法,NSArray类并不能够调用它子类的方法

此时在NSArray并没有实现-addObject:方法,经过系统三次补救机会仍没有找到,最后就崩溃了。

三次补救机会:

 (1)、动态方法处理,没有找到实现此方法,

 (2)、需要消息转化机制了,继续寻找先转给一个对象处理,并没有任务对象处理,

 (3)、然后再继续找最后一次机会,转化一个类来处理,并没有实现处理,结果抛出异常,崩溃了。

附上崩溃的图:

屏幕快照 2018-04-19 下午2.34.29.png

以上个人观点,希望可以互相交流。

相关文章

网友评论

      本文标题:2018-04-19 @property(copy)NSMuta

      本文链接:https://www.haomeiwen.com/subject/ehywkftx.html