0

このコードで、collectionを呼び出したクラスで がリリースされた場合、 またはinit...はどうなりますself.titleself.managedObjectContext? それ自体.itemNameではcurrentCollectionなく、呼びかける必要はありませんか?collection

- (id)initWithCollection:(AACollection *)collection {
    if( (self = [super initWithNibName:@"AACollectionViewController" 
                                bundle:nil]) ) {
        currentCollection = [collection retain];
        self.title = collection.itemName;
        self.managedObjectContext = collection.managedObjectContext;
    }

ありがとう

4

2 に答える 2

2

self.title または self.managedObjectContext はどうなりますか?

保持collectionしているので、悪いことは何も起こりません。copyとはいえ、通常は、文字列プロパティにセマンティクスを与えることをお勧めします。たとえば、titleが文字列プロパティであると仮定すると、collection.itemNameたまたま変更可能な文字列が得られた場合、その不変のコピーを作成して、鼻の下で変更されないようにする必要があります (変更可能なプロパティを参照するだけで発生する可能性があります)。ストリング)。を使用copyすると、それが行われます。

コレクション自体ではなく、 currentCollection で .itemName を呼び出す必要はありませんか?

いいえcurrentCollectioncollection同じオブジェクトを指します。保持されるのはオブジェクトであり、ポインターではありません。を使用するほうがスタイルが良いと考える人もいるかもしれませんがcurrentCollection、どちらの方法でも実質的に同じです。

于 2012-04-10T15:31:31.387 に答える
1

currentCollection = [collection retain];両方currentCollectionを実行collectionし、同じオブジェクトを指している場合。.itemNameしたがって、その行の後は、プロパティへのアクセスにどちらを使用するかは関係ありません。

于 2012-04-10T15:31:38.543 に答える