对于对象,如果对象无效,我可以编写一个访问者来返回nil
:
- (Weather *)howsTheWeather
{
if (![WeatherNetwork isAvailable]) {
return nil;
}
Weather *weatherNow = [WeatherNetwork getWeather];
return weatherNow;
}
我想用CLLocationCoordinate2D
,struct
来保持纬度和经度。我试过这个:
- (CLLocationCoordinate2D)coordinate
{
CLLocationCoordinate2D coord = CLLocationCoordinate2DMake(self.latitude, self.longitude);
if (!CLLocationCoordinate2DIsValid(coord)) {
return nil;
}
return coord;
}
但编译器抱怨“从具有不兼容结果类型'CLLocationCoordinate2D'的函数返回'void *'”
处理这种情况的最佳方法是什么?我在考虑编写一个单独的方法-(BOOL)isLocationValid:(CLLocationCoordinate2D)coordinate
。有没有更好的方法来解决这个问题?
答案 0 :(得分:1)
结构不能为空。您需要使用选项2(根据结果包含的数据检查结构的有效性)。或者,你可以将你的结构包装在 能够被禁止的伪对象中,但这似乎有很多虚假的好处。