私はiOSプラットフォームが新しく、メモリ管理にいくつか問題があります。カスタムUIViewControllerクラスのイニシャライザを使ってオブジェクト(試し版)を渡しています。UIViewControllerが最終的にそれを受け取ったとき、オブジェクトはnilです。誰かが私を正しい方向に向けることを望んでいました。私は以下のソースコードをいくつか含めました。iOS初期化パラメータがnilである
Trial.h
@interface Trial : NSObject {
NSString *IRBNumber;
NSString *PI;
NSString *Sponsor;
NSString *ContactName;
NSString *ContactPhone;
NSString *ContactEmail;
NSString *Location;
NSString *Objective;
NSString *Eligibility;
NSString *Name;
NSString *DiseaseGroup;
NSString *Age;
}
@property (retain, nonatomic) NSString *IRBNumber;
@property (retain, nonatomic) NSString *PI;
@property (retain, nonatomic) NSString *Sponsor;
@property (retain, nonatomic) NSString *ContactName;
@property (retain, nonatomic) NSString *ContactEmail;
@property (retain, nonatomic) NSString *ContactPhone;
@property (retain, nonatomic) NSString *Location;
@property (retain, nonatomic) NSString *Objective;
@property (retain, nonatomic) NSString *Eligibility;
@property (retain, nonatomic) NSString *Name;
@property (retain, nonatomic) NSString *DiseaseGroup;
@property (retain, nonatomic) NSString *Age;
@end
DiseaseControllersViewController.m
- (void)tableView:(UITableView *)tableView didSelectRowAtIndexPath:(NSIndexPath *)indexPath {
Trial *trial = (Trial *)[dataArray objectAtIndex:indexPath.row];
TrialDetailController *detailViewController = [[TrialDetailController alloc] initWithNibNameAndTrial:@"TrialDetailController" bundle:nil trial:trial];
[self.navigationController pushViewController:detailViewController animated:YES];
[detailViewController release];
[trial release];
}
ここで初期化子
-(id)initWithNibNameAndTrial: (NSString*)NibNameOrNil bundle:(NSBundle*)nibBundlerOrNil trial:(Trial *)inTrial {
self = [super initWithNibName:NibNameOrNil bundle:nibBundlerOrNil];
if(self) {
self.trial = inTrial;
}
return self;
}
TrialDetailController.h
#import "Trial.h"
@interface TrialDetailController : UITabBarController {
Trial *trial;
}
@property (nonatomic, retain) Trial *trial;
-(id)initWithNibNameAndTrial: (NSString*)NibNameOrNil bundle:(NSBundle*)nibBundlerOrNil trial:(Trial *)inTrial;
-(IBAction)objectiveTabItemClick:(id)sender;
-(IBAction)detailsTabItemClick:(id)sender;
@end
の定義があります
TrialDetailControllerのinit-Methodのコードを投稿することはできますか? – samsam
あなたはそれを持っています。私はちょうどそれを投稿した。 – Hopdizzle
これをデバッグしようとしましたか?ブレークポイントを設定し、変数/プロパティ値をgdbデバッガ(コンソールウィンドウ)で表示することができます。 [Objective-C Debuging Tips in XCode4?](http://stackoverflow.com/a/7650979/590956)を参照してください。デバッガで 'po dataArray'が何を表示するのか不思議です。この配列にはどこに値を追加しますか?オブジェクトを追加する前に配列を初期化しますか? – Sam