3

オブジェクトを割り当て、保持する方法についての情報が必要です。

たとえば、2 つのビューコントローラーがあり、配列データを viewcontrlr 1 から viewContrl 2 に渡す必要がある場合、オブジェクトをビュー 1 からビュー 2 に送信し、ビュー 1 で解放してビュー 2 に保持するにはどうすればよいでしょうか。

単純な = 演算子は、ビュー 1 オブジェクトを指すアドレスを割り当てるだけです。ビュー 1 で obj を解放し、ビュー 1 から渡されたときにビュー 2 に新しいオブジェクトを保持できる最善の方法は何ですか。

4

2 に答える 2

2

ビュー コントローラ 2 で NSMutableArray を作成し、その保持プロパティを宣言します。

@interface VC2 : UIViewController
{
   NSMutableArray *mutableArrayInVC2
} 
@property (nonatomic, retain) NSMutableArray *mutableArrayInVC2

次に、View Controller で次のように渡すことができます。

viewController2Instance.mutableArrayInVC2 = mutableArrayInVC1

そして、それをリリースしても安全です:

[mutableArrayInVC1 release];

[コメントに対応するために編集]

mutableArrayInVC2 の保持プロパティを宣言し、mutableArrayInVC1 をそれに渡すと、「舞台裏で」以下のようにセッター メソッドを介して変数にアクセスします。

-(void)setMutableArrayInVC2:(NSMutableArray *)arrayValue
{
    [arrayValue retain]; // This is your mutableArrayInVC1
    [mutableArrayInVC2 release]; // This is nil the first time you access it which is cool - we can send messages to nil in ObjC
    mutableArrayInVC2 = arrayValue; // So basically you end up doing and assignment but only after retaining the object so it is pointing to the same memory address BUT it is now 'owned' by your VC2 instance.
}

それが理にかなっていることを願っています!ログ

于 2011-02-21T00:12:59.960 に答える
0

また、一般的な保持カウント メカニズムに関する情報については、この記事を参照してください。これは、IMO が Cocoa と Obj-C 全般に関する最高の入門書の 1 つであるCocoa Programming for Mac OS Xの内容と非常によく似ています。Obj-C/Cocoa の経験がどれくらいあるかはわかりませんが、そのような入門書を探しているなら、始めるのに最適な場所です。

于 2011-02-21T00:25:22.697 に答える