我有两个子类‘`MKAnnotation’对象。我需要在我班上的某个时候返回每一种类型。
我是否应该:
-(void)returnAnnotation:(MKAnnotation *)myAnnotation;然后让方法检查对象类,然后从那里开始?
-(void)returnAnnotation:(MKAnnotation *)myAnnotation {
if ([myAnnotation isKindOfClass:[MyAnnotationA Class]]) {
// do stuff
} else if ([myAnnotation isKindOfClass:[MyAnnotationB Class]]) {
// do other stuff
}
}或
-(void)returnAnnotationA:(MyANnotationA *)myAnnotationA;
-(void)returnAnnotationA:(MyAnnotationB *)myAnnotationB;前者有助于减少方法,并使您更容易知道要调用哪个委托方法。
但后者更简洁,可能更容易理解正在发生的事情。
或者这条路基本上是六条半打的?
还是“可读性”对“写作能力”?
发布于 2014-03-25 17:59:58
在您的例子中,这似乎没有什么区别,但我建议您使用:
-(void)returnAnnotationA:(MyANnotationA *)myAnnotationA;
-(void)returnAnnotationA:(MyAnnotationB *)myAnnotationB;以确保只传入有效的MKAnnotation子类。如果方法没有正确地处理MKAnnotation对象或任何其他子类,则不应该允许传入它们。
https://stackoverflow.com/questions/22640353
复制相似问题