0

私の問題は、オブジェクトを子ビュー (コントローラー) から親ビュー (コントローラー) に戻したいということです。次のような呼び出しでオブジェクトを渡します。

parentView.someObject=objectFromChild;

子ビューが削除されるまではすべて問題ありませんが (ポップアップされてポインターが表示されないため)、子ビューから親ビューに渡されたオブジェクトも削除されます。オブジェクトを保存できるようにする方法を教えてもらえますか (オブジェクトを作成したビューが削除された場合でも)。NSString を使用すると、私のメソッドは非常にうまく機能します...しかし、オブジェクトを使用すると、常に EXC_BAD_ACCESS を取得します

4

2 に答える 2

0

ここにはいくつかの課題があるようです。簡単なヒントをいくつか紹介します。

データの受け渡し
オブジェクトを子から親に上向きに渡す場合は、オブジェクトまたは変数がパブリックプロパティになるようにChildクラスを設計します。次に、他のオブジェクト(子を所有する親オブジェクトなど)がそのプロパティにアクセスできます。

データ
の存続通常、EXC_BAD_ACCESSは、オブジェクトがシステムによってすでに削除されていることを意味します。プロパティ宣言で「strong」を設定して、オブジェクトを保持するシステムに通知します。これにより、EXC_BAD_ACCESSの問題が解決されます。

非常に単純な親子データ関係を実装してデータを保持する方法の例については、次のコードを参照してください。

//****** Child.h

@interface Child : NSObject

// Child has a public property
// the 'strong' type qualifier will ensure it gets retained always
// It's public by default if you declare it in .h like so:
@property (strong, nonatomic) NSString *childString;

@end


//****** ParentViewController.h
#import <UIKit/UIKit.h>
#import "Child.h"

@interface ParentViewController : UIViewController

@property (strong, nonatomic) Child *myChild;

@end



//****** ParentViewController.m

@implementation ParentViewController

@synthesize myChild;

- (void)viewDidLoad {

    [super viewDidLoad];

    // create child object
    self.myChild = [[Child alloc] init];

    // set child object (from parent in this example)
    // You might do your owh setting in Child's init method
    self.myChild.childString = @"Hello";

    // you can access your childs public property
    NSLog(@"Child string = %@", self.myChild.childString;
}
于 2013-03-15T19:29:37.070 に答える
0

親オブジェクトがそれを保持していることを確認してください。

于 2013-03-15T19:17:55.970 に答える