我有一个单身人士课程。在这堂课中,我正拿着一系列歌曲。这个数组不应该改变!在我的应用程序中,当我从我的歌曲列表中选择一首歌曲时,当前歌曲将被插入到另一个变量中。这个var是Song类型(数组是歌曲数组)。所以当我写作时
_myDataMgr._currSong = [_myDataMgr.songArray objectAtIndex:index];
每次我改变这个currSong变量时,songArray都会改变,因为currSong指向这个数组。所以我的问题是如何创建这个currSong的副本?我知道关于NSCopy
的事情,但我真的不知道如何使用它。谢谢你们。
P.S:_myDataMgr
是单身人士
答案 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]];