2010-09-13 46 views
1
- (id)initWithDelegate:(id)delegate 
{ 
    self = [super init]; 
    if (self) 
    { 
     _delegate = delegate; 

    } 
    return self; 
} 

通常建議在init方法中傳遞委託嗎?在另一種將被首先調用的方法中呢?設置在iOS上的Objective-C代表

還做我需要設置_delegatenil或釋放在deallocviewDidUnload方法?那麼控制器實現這個委託的方法deallocviewDidUnload呢?

回答

2

通常推薦在init方法中傳入委託嗎?

這取決於你想要做什麼。如果每次實例化對象時都需要委託,那麼在將對象傳遞給對象時,只需將其傳入即可。儘管如此,這完全是個人偏好。

在這裏的代碼,你只是分配_delegate,所以沒有必要爲你與你的deallocviewDidUnload方法特定伊娃做任何事情。

0

通常推薦在init方法中傳入委託嗎?在另一種將被首先調用的方法中呢?

您應該只設置委託在init當對象可能需要初始化過程中與代表溝通,或者如果委託只應在對象的生命週期內設置一次。否則,建議通過屬性設置委託。

另外我是否需要在_deleoc方法中設置_delegate爲零或釋放?那麼viewDidUnload呢?

不,_delegate並不需要設置爲零,而且只需要如果它一直保留到被釋放。

+1

在init方法中設置委託也很方便。如果你總是通過設置屬性來跟進一個init調用,那麼你可能會合併成一個方法調用。 – kubi 2010-09-13 03:17:54

1

如果您必須在init方法期間(或根本不知道)委託,那麼它不是委託。在使用委託模式時,對象應該能夠在沒有委託的情況下執行某種有用的默認行爲。

不管怎樣,如果你有一個參數,你的對象需要知道爲了正常工作而需要知道的東西,你應該在初始化時通過它。