2010-06-13 41 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对于你需要做的所有事情都能很好地工作,如果你改变它,然后再调整这个属性,那么你可以并且会在你的应用程序中引入一个细微的错误。

简短的回答,是的,你可以改变输入参数类型;但你真的不应该。