0

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

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

每次我将更改此 currSong 变量时,songArray 都会更改,因为 currSong 指向此数组。所以我的问题是如何创建这个 currSong 的副本?我知道一些东西,NSCopy但我真的不知道如何使用它。谢谢你们。PS:_myDataMgr是单例

4

1 回答 1

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]];
于 2013-01-13T09:18:38.920 回答