复制自定义类对象

时间:2014-04-13 18:42:29

标签: objective-c cocoa-touch cocoa copy

我有一个自定义类,它有一些属性。我想复制这个类的一个对象,所以我得到了第二个具有相同内容的对象 例如:

MyCustomClass *objectName = [[MyCustomClass alloc] init];
// fill here with some properties
objectName.propertyOne = @"smth";
objectName.propertyTwo = @"smth";
// And copy my object
MyCustomClass *secontObject = [objectName copy];

是否存在类似“复制”方法的内容?

注意:已经内置的真实复制方法没有帮助。

3 个答案:

答案 0 :(得分:2)

内置任何内容。为此包含了NSCopying协议,但由于它只是一个协议,因此您必须自己实现复制逻辑。

答案 1 :(得分:2)

要使用 copy 方法,首先需要为自定义类实现NSCopying协议:

@interface SomeClass : NSObject <NSCopying> 

@property (nonatomic, strong) NSString *string;
@property (nonatomic, strong) NSNumber *number;

@end


@implementation SomeClass

- (id)copyWithZone:(NSZone*)zone
{
     SomeClass *copyObject = [SomeClass new];
     copyObject.string = _string;
     copyObject.number = _number;

     return copyObject;
}

. . . . . . .

@end

答案 2 :(得分:1)

您无法复制自定义类。您自己需要实现复制逻辑。

请参阅How to copy an object in objective c