私の子View Controllerには、次のように定義されたプロパティがあります。
@property (nonatomic, copy) NSString *name;
親であるView Controller Aには、次のものがあります。
NSString *temp = currency.name; //This is because currency is a Core Data Managed Object.
//I wanted to make sure it wasn't a confounding factor.
childViewController.name = temp;
if(childViewController.name == temp)
NSLog(@"I am surprised");
問題は、if
ステートメントが同等性を見つけ、「私は驚いています」が出力されることです。==
それらが同じオブジェクトであるかどうかを確認する必要がありcopy
、プロパティ宣言で を使用することで、セッターがコピーを作成していることを確認する必要があると思いました。デバッガーでチェックインしたところ、両方とも同じ文字列を指しています。(これは不変であると私は信じています。なぜこれが起こっているのでしょうか?)
と書いても同じことが起きてchildViewController.name = [temp copy];
ビックリ!
ここで何が起こっているのか誰でも説明できますか?
編集:循環参照について心配することについてここで少し削除しましたが、問題ではないことに気付きました。