0

使用对象,我可以编写一个访问器以nil在对象无效时返回:

- (Weather *)howsTheWeather
{
    if (![WeatherNetwork isAvailable]) {
        return nil;
    }
    Weather *weatherNow = [WeatherNetwork getWeather];
    return weatherNow;
}

我想用 a 来执行此操作CLLocationCoordinate2D, astruct用于保存纬度和经度。我试过这个:

- (CLLocationCoordinate2D)coordinate
{
    CLLocationCoordinate2D coord = CLLocationCoordinate2DMake(self.latitude, self.longitude);
    if (!CLLocationCoordinate2DIsValid(coord)) {
        return nil;
    }
    return coord;
}

但编译器抱怨“从结果类型不兼容的函数中返回 'void *' 'CLLocationCoordinate2D'”

处理这种情况的最佳方法是什么?我正在考虑编写一个单独的方法-(BOOL)isLocationValid:(CLLocationCoordinate2D)coordinate。有没有更好的方法来处理这个问题?

4

1 回答 1

1

结构不能为空。您将需要使用选项 2(根据结构包含的数据检查结构的有效性)。或者,您可以将您的结构包装在一个能够被nil'ed的伪对象中,但这似乎需要大量工作才能获得虚假收益。

于 2012-05-24T11:15:27.857 回答