最佳答案
                                        
                                                                        
                                我试图在我的脑海中理清一些关于实施 copyWithZone:的事情,有人可以评论以下..。
// 001: Crime is a subclass of NSObject.
- (id)copyWithZone:(NSZone *)zone {
Crime *newCrime = [[[self class] allocWithZone:zone] init];
if(newCrime) {
[newCrime setMonth:[self month]];
[newCrime setCategory:[self category]];
[newCrime setCoordinate:[self coordinate]];
[newCrime setLocationName:[self locationName]];
[newCrime setTitle:[self title]];
[newCrime setSubtitle:[self subtitle]];
}
return newCrime;
}
// 002: Crime is not a subclass of NSObject.
- (id)copyWithZone:(NSZone *)zone {
Crime *newCrime = [super copyWithZone:zone];
[newCrime setMonth:[self month]];
[newCrime setCategory:[self category]];
[newCrime setCoordinate:[self coordinate]];
[newCrime setLocationName:[self locationName]];
[newCrime setTitle:[self title]];
[newCrime setSubtitle:[self subtitle]];
return newCrime;
}
最好是直接写类名 [[Crime allocWithZone:zone] init]还是应该使用 [[[self Class] allocWithZone:zone] init]?
使用 [self month]复制 iVar 是否可以,还是应该直接访问 iVar,即 _month?
 
                                
                             
                                
                             
                                
                            