1

我有以下代碼:如何處理自定義UIViewController委託(ARC)?

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

對於MapViewController中:

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

如果ARC啓用,我還需要向mapVC.delegate設置爲零?如果是這樣,這是否意味着我不應該在本地創建MapViewController,而是爲該對象設置一個實例變量?

+0

這一切對我來說都不錯。你看到問題嗎?如果是這樣,它可能有助於更具體地瞭解它們是什麼。或者這只是一個問題,要仔細檢查你是否正確? – 2012-04-20 10:00:19

+0

那麼假設fooViewController創建MapViewController,而fooViewController將自己設置爲MapViewController的委託。如果fooViewController被銷燬,並且MapViewController的委託方法被調用,它會不會崩潰? – ninjaneer 2012-04-20 10:02:55

+0

我不認爲這會,那是我相信的弱點。然而,我還沒有太多ARC的經驗,所以我會留給那些確認的人。 – 2012-04-20 10:08:34

回答

0

剛剛通過this question確認您不需要將參考設置爲零。上面的代碼都應該沒問題。