OC Copy探究

1.copy的目的 生成一个独立的对象,不对原对象有影响

 

2. copy总结 copy mutablycopy
NSString NSString 浅拷贝 NSMutableString 深拷贝
NSMutableString NSString  深拷贝 NSMutableString 深拷贝
NSDictionary NSDictionary 浅拷贝 NSMutableDictionary 深拷贝
NSMutableDictionary NSDictionary 深拷贝 NSMutableDictionary 深拷贝
NSArray NSArray 浅拷贝 NSMutableArray 深拷贝
NSMutableArray NSArray 深拷贝 NSMutableArray 深拷贝

 3.copy属性关键字使用注意点

@interface SSPerson : NSObject

@property (copy, nonatomic) NSMutableArray *data;  //会变成不可变对象 容易造成崩溃

@property (strong, nonatomic) NSArray *data;

@end

@implementation SSPerson 

- (void)setData:(NSArray *)data {

    if (_data != data) {

        [_data release];

        _data = [data copy];

    }

- (void)dealloc {

    self.data = nil;

    [super dealloc];

}

@end

4. 自定义对象copy 需要实现copyWithZone方法,另外自定义的类 没有Mutable只说,Mutable只针对系统的类

@interface SSPerson : NSObject <NSCopying>

@property (assign, nonatomic) int age;

@property (assign, nonatomic) double weight;

@end

 

@implementation SSPerson 

- (id)copyWithZone:(NSZone *)zone {

    MJPerson *person = [[MJPerson allocWithZone:zone] init];

    person.age = self.age;

    person.weight = self.weight;

    return person;

@end

 

 

posted @ 2021-05-28 16:47  syh-918  阅读(80)  评论(0)    收藏  举报