我有一个单例类。在这个课堂上,我拿着一组歌曲。这个数组不应该改变!在我的应用程序中,当我从歌曲列表中选择一首歌时,当前歌曲会被插入到另一个变量中。这个变量是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]];