如果我的类是单例类,我如何创建指向NSArray的复制指针?

时间:2013-01-13 09:14:02

标签: ios objective-c cocoa-touch

我有一个单身人士课程。在这堂课中,我正拿着一系列歌曲。这个数组不应该改变!在我的应用程序中,当我从我的歌曲列表中选择一首歌曲时,当前歌曲将被插入到另一个变量中。这个var是Song类型(数组是歌曲数组)。所以当我写作时

_myDataMgr._currSong = [_myDataMgr.songArray objectAtIndex:index];

每次我改变这个currSong变量时,songArray都会改变,因为currSong指向这个数组。所以我的问题是如何创建这个currSong的副本?我知道关于NSCopy的事情,但我真的不知道如何使用它。谢谢你们。 P.S:_myDataMgr是单身人士

1 个答案:

答案 0 :(得分:2)

您应该使您的班级符合NSCopying协议。

@interface Song : NSObject <NSCopying>

然后,实施方法copyWithZone:

- (id)copyWithZone:(NSZone *)zone
{
    id copy = [[[self class] alloc] init];

    if (copy) {
        // Copy properties here...
    }

    return copy;
}

如果您需要实例的副本,请致电copy(我建议您在将歌曲插入单例类中的数组时调用此方法。)

[myArray insertObject:[song copy]];