ここにはいくつかの課題があるようです。簡単なヒントをいくつか紹介します。
データの受け渡し
オブジェクトを子から親に上向きに渡す場合は、オブジェクトまたは変数がパブリックプロパティになるように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;
}