0

私はシングルトンクラスを持っています。このクラスでは、たくさんの曲を持っています。この配列は変更しないでください。アプリで曲リストから曲を選択すると、現在の曲が別の変数に挿入されます。この var は Song タイプです (配列は song の配列です)。だから私が書いているとき

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

この currSong 変数を変更するたびに、currSong がこの配列を指しているため、songArray が変更されます。私の質問は、この 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です。(singleton クラスの配列に曲を挿入するときにこれを呼び出すことをお勧めします。)

[myArray insertObject:[song copy]];
于 2013-01-13T09:18:38.920 に答える