Objective-cのコーディングを始めたばかりなので、次の問題があります。
私はいくつかのインスタンスを持っています
@interface MyClass
@property (strong) MySecondClass *first;
@property (strong) MySecondClass *second;
@end
@implementation MyClass
@synthesize first = _first;
@synthesize second = _second;
/*this is called while initialisation*/
-(void) initialisation{
_first = [[MySecondClass alloc] init];
_second = [[MySecondClass alloc] init];
}
/*what i want to do*/
-(void) swap{
// second one should be replaced with first one
_second = _first;
// first pointer should be replaced by new instance
_first = [[MySecondClass alloc] init];
}
@end
問題は、swapメソッドを呼び出すと、_firstが古いオブジェクトを指しているため、_secondが同じ新しいオブジェクトに置き換えられることです。
私はすでに次のようにコピーを試みましたが、例外がスローされます。
_second = [_first copy];
PS:私はARCを使用しています
編集
私が本当に達成したいことは、次のようなものです。
_second = _first
MySecondClass *tmp = [[MySecondClass alloc] init];
_first = &tmp;
しかし、これはコンパイラエラーを示しています。「MySecondClass*」へのObjective-Cポインタへの間接ポインタの暗黙的な変換はARCでは許可されていません。
前もって感謝します。