Van*_*nel 0 iphone objective-c argument-passing
我正在开发一个iPhone应用程序,并在方法中收到警告:
NSNumber *latitudeValue;
NSNumber *longitudeValue;
[self obtainLatitude:latitudeValue longitude:longitudeValue];
Run Code Online (Sandbox Code Playgroud)
该方法声明如下:
- (void) obtainLatitude:(NSNumber *)latitudeValue longitude:(NSNumber *)longitudeValue {
NSNumberFormatter * f = [[NSNumberFormatter alloc] init];
[f setNumberStyle:NSNumberFormatterDecimalStyle];
latitudeValue = [f numberFromString:[latitude.text stringByReplacingOccurrencesOfString:@"," withString:@"."]];
longitudeValue = [f numberFromString:[longitude.text stringByReplacingOccurrencesOfString:@"," withString:@"."]];
[f release];
}
Run Code Online (Sandbox Code Playgroud)
正如你所看到的,我正在尝试计算latitudeValue和longitudeValue调用,obtainLatitude:longitude:但我做错了.
我该如何解决这个错误?
Elfred的答复工作,但传递通过引用非NSError**参数是相当罕见的.同时,坐标 - 数值,一般 - 最通常存储在普通的旧C型结构中,因为,相比之下,一个NSNumber是相当多的开销(没什么大不了几的他们,将是一个问题,如果你有几十,一百或几千个坐标).
就像是:
struct MyLocation {
CGFloat latitude;
CGFloat longitude;
};
typedef struct MyLocation MyLocation;
Run Code Online (Sandbox Code Playgroud)
然后:
- (MyLocation) mapCoordinates {
MyLocation parsedLocation;
parsedLocation.latitude = ....;
parsedLocation.longitude = ....;
return parsedLocation;
}
Run Code Online (Sandbox Code Playgroud)
像上面这样的东西在iPhone/Cocoa程序中更为典型.
正如Dave指出的那样,你真的不需要为此定义自己的类型.使用CLLocationCoordinate2D或CLLocation.
| 归档时间: |
|
| 查看次数: |
1338 次 |
| 最近记录: |