2010-06-13 50 views
0

例如,在一個文檔KVC式驗證方法來實現這樣的:KVC驗證方法中的類型是否重要?

-(BOOL)validateAge:(id *)ioValue error:(NSError **)outError 

他們用標識*爲ioValue類型。由於這不是方法簽名的一部分,我不知道這會傷害到這樣做:

-(BOOL)validateAge:(NSNumber *)ioValue error:(NSError **)outError 

這仍然是罰款與KVC?

回答

1

這是行不通的,因爲它們不一樣。由於該方法接受指向指針的指針,因此id*將更接近於NSNumber**。所以,你的方法是這樣的:

-(void)validateAge:(NSNumber**)ioValue error:(NSError**)outError 

但在這樣做NO點。 id對於你需要做的所有事情都能很好地工作,如果你改變它,然後再調整這個屬性,那麼你可以並且會在你的應用程序中引入一個細微的錯誤。

簡短的回答,是的,你可以改變輸入參數類型;但你真的不應該。

相關問題