-1

この質問は非常に単純に見えますが、ここに状況があります。効率的な方法でそれを行う方法の助けが必要です。たとえば、ビュー 1、ビュー 2、ビュー 3 の 3 つのビューがあります。

最初に、ベース ビューからビュー 1 をプッシュし、次にビュー 1 からビュー 2 をプッシュし、次にビュー 2 からビュー 3 をプッシュしました。ビュー 3 には、ユーザーの情報を保持しているオブジェクトが必要です。だからここで私がしたことは、そのユーザーオブジェクトをベース1からビュー1に渡し、すべてのビューをロードしながらビュー2とビュー3に渡しました.ここでは、すべてのビューがそのオブジェクトをIvarとして保存しています. .

オブジェクトを設定するために base から View 3 に直接アクセスするのは良くないと思います. または View 3 から base にアクセスして値を取得する.

初心者として、この疑問を明確にしたいだけです。ありがとう。

4

5 に答える 5

5

3 つのビューすべてに同じオブジェクトを渡す場合、そのオブジェクトの保持カウントのみがビューごとにインクリメントされるため、余分なメモリを消費しません。したがって、事実上、1 つのオブジェクトのみのメモリが考慮されます。

于 2012-11-29T06:36:38.293 に答える
1

AppDelegate でそのユーザー オブジェクトを作成します。view3 で appdelegate 参照を作成します。

 in view3.h
     AppDelegate *appdelegate;


 in view3.m
 -(void)viewDidLoad
   {
   appdelegate = (AppDelegate *)[[UIApplication SharedApplication]delegate];

   appdelegate.userobj=......

   }

そのオブジェクトをview3で直接使用する

于 2012-11-29T06:34:19.503 に答える
1

ユーザー情報をクラス UserInfo として定義できます。次に、UserInfo.m で次のように sth をコーディングできます。

static UserInfo *sharedUserInfo_ = nil;
+ (UserInfo*)sharedUserInfo{
  if(sharedUserInfo_ == nil){
  sharedUserInfo_ = [[UserInfo alloc] init];
}
return sharedUserInfo_;  
}
于 2012-11-29T05:39:41.107 に答える
1

シングルトンを使用して、必要な情報をアプリケーション全体のさまざまなクラス/ビューに保持します。

Objective C でシングルトンを実装する方法がわからない場合は、この優れたチュートリアルに従ってください。

于 2012-11-29T05:24:37.240 に答える
1

私が理解したことから、ビュー 1 でオブジェクトを作成し、ビュー 3 で使用しようとしています。そのオブジェクトが従業員クラスであるとします。使い方はこちら。

ビュー 1 で Employee オブジェクトを割り当てて初期化します。ビュー 2 の init メソッドをオーバーライドします。

-(id)initWith:(Employee*)emp
{
     temEmp=emp;
}

同様に、View 3 init をオーバーライドします。

オブジェクトの割り当てと初期化は 1 回だけなので、同じオブジェクトが 3 つのビューすべてで共有されます。メモリを無駄にしません

于 2012-11-29T05:27:32.473 に答える