1

私は次のコードを持っている:MapViewControllerについてはカスタムUIViewControllerデリゲート(ARC)について何をすべきですか?

- (IBAction)mapPressed:(id)sender 
{ 
    MapViewController *mapVC = [[MapViewController alloc] initWithNibName:@"MapViewController" bundle:[NSBundle mainBundle]]; 
    mapVC.delegate = self; 
    [self.navigationController pushViewController:mapVC animated:YES]; 
} 

:ARCが有効になっている場合は

//MapViewController.h 
@protocol MapViewDelegate 
@required 
- (void)selectedPlacemark:(MKPlacemark*)placemark; 
@end 
//... 
@property (nonatomic, weak) id<MapViewDelegate> delegate; 
//... 

は、私はまだnilにmapVC.delegateを設定する必要がありますか?もしそうなら、これは私がMapViewControllerをローカルに作成するのではなく、その代わりにそのオブジェクトのインスタンス変数を設定することを意味しますか?

+0

これはすべて私にはよく見えます。あなたは問題を抱えていますか?もしそうなら、彼らが何であるかをより具体的にするのに役立つかもしれません。それとも、これはちょうどあなたがそれを正しく持っていることを確認するための質問ですか? –

+0

さて、fooViewControllerがMapViewControllerを作成し、fooViewControllerがMapViewControllerのデリゲートとして設定されているとしましょう。 fooViewControllerが破棄され、MapViewControllerのデリゲートメソッドの1つが呼び出されると、クラッシュしませんか? – ninjaneer

+0

私はそうは思わない、それは私が信じる弱い参照のポイントです。しかし、私はまだARCの経験があまりないので、確認する人のために残しておきます。 –

答えて

0

ちょうどthis questionで確認して、参照をnilに設定する必要はありません。上記のコードですべてがうまくいくはずです。

関連する問題