首页 > 其他 > 详细

理解Objective-c中的copy

时间:2015-04-27 14:58:57      阅读:411      评论:0      收藏:0      [点我收藏+]

Objective-c中某个实例对象是否支持copy操作,要看这个对象是否实现了NSCopying协议:

@protocol NSCopying
- (id)copyWithZone:(NSZone *)zone;
@end

对于mutableCopy操作对应的有NSMutableCopying协议:

@protocol NSMutableCopying
- (id)mutableCopyWithZone:(NSZone *)zone;
@end

 我们看到NSObject接口里面是有copy和mutableCopy方法的,是不是说我们上面说的必须遵循协议的说法是错误的呢?

@interface NSObject <NSObject> {
    Class isa  OBJC_ISA_AVAILABILITY;
}
........
- (id)copy;
- (id)mutableCopy;
.......
@end

我们来做一个测试:

    //test NSObject copy
    NSObject *originObject = [[NSObject alloc] init];
    NSObject *copiedObject = [originObject copy];
    NSObject *mutableCopiedObject = [originObject mutableCopy];
    NSLog(@"%@, %@, %@", originObject, copiedObject, mutableCopiedObject);

当代码执行到[originObject copy]时crash了,提示NSObject并没有实现NSCopying协议的方法,

2015-04-27 14:16:56.680 NSLockTest[52535:816047] -[NSObject copyWithZone:]: unrecognized selector sent to instance 0x79f909b0

 

理解Objective-c中的copy

原文:http://www.cnblogs.com/goodyboy6/p/4460071.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!