私は2つのプロパティを持つ新しいのUIViewControllerを作成しています:iOS - NSURLがinitメソッドに保持されないのはなぜですか?
@property (retain, nonatomic) NSURL *url;
@property (retain, nonatomic) NSString *title;
とsynthetised:私はメモリ管理ガイドが言うようにセッターを使用したが、いないよ、私のカスタムのinitメソッドで
@synthesize url = _url;
@synthesize title = _title;
私はのviewDidLoadでプロパティを使用する必要があり、URLは空のようで、タイトルはありません
- (id)initWithURL:(NSURL *)url andTitle:(NSString *)titleTemp
{
self = [super initWithNibName:@"navigatorViewController" bundle:nil];
if (self) {
_url = url;
_title = titleTemp;
}
return self;
}
- (void)viewDidLoad
{
[super viewDidLoad];
// Do any additional setup after loading the view from its nib.
[_titreBarButtonItem setTitle:_title];
NSURLRequest *urlRequest = [[NSURLRequest alloc] initWithURL:_url];
[_webView loadRequest:urlRequest];
[urlRequest release];
}
私は私のタイトルを見ることができませんが、私のWebビューは空白です。 initでself.urlを使用している場合、動作しています!
アイデアはありますか?
PS:ここで私は私のinitを呼び出す方法は次のとおりです。あなたがcopy
またはretain
を使用して(あなたがを保持何のため)の参照を追加する必要が
NSString *urlString = [[[NSBundle mainBundle] pathForResource:@"infos" ofType:@"html"] copy];
NSURL *url = [[NSURL alloc] initFileURLWithPath:urlString];
[urlString release];
navigatorViewController *navigatorVC = [[navigatorViewController alloc] initWithURL:url andTitle:@"Infos"];
[url release];
[self presentViewController:navigatorVC animated:YES completion:nil];
[navigatorVC release];
どうもありがとう
あなたが読んで、 '@のsynthesize'を使用している場合は、[この](http://stackoverflow.com/questions/8576593/objective-c-memory-management-of-instance-members/8576760#8576760)背景に何が起こっているのかを概観することができます。また、 'retain'、' release'などの目的で、メモリ管理を理解していることを確認してください。 –