-copy, as implemented by mutable Cocoa classes, always returns their immutable counterparts. Thus, when an NSMutableArray is sent -copy, it returns an NSArray containing the same objects.
实测:
@property(nonatomic,copy)NSMutableArray *arrayCopy; @property(nonatomic,strong)NSMutableArray *arrayStrong; self.arrayCopy=[[NSMutableArrayalloc]init]; self.arrayStrong=[NSMutableArrayarrayWithArray:@[@"strong1",@"strong2"]]; [self.arrayCopy addObject:@"copy1"]; [self.arrayStrong addObject:@"strong3"];
报错:
-[__NSArrayI addObject:]: unrecognized selector sent to instance 0x100107090
而arrayStrong则不会错