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



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

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

每次我将改变这个currSong变量的songArray将改变,因为currSong是指向这个数组。所以我的问题是如何创建这个currSong的副本?我知道一些NSCopy,但我不知道如何使用它。谢谢大家。注:_myDataMgr是单元素

你应该使你的类符合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]];

最新更新