我的核心数据读一本书,在某些时候笔者有此验证方法使用一个或多个星号:困惑在Objective-C
- (BOOL)validateRadius:(id *)ioValue error:(NSError **)outError {
NSLog(@"Validating radius using custom method");
if ([*ioValue floatValue] < 7.0 || [*ioValue floatValue] > 10.0) {
// Fill out the error object
if (outError != NULL) {
NSString *msg = @"Radius must be between 7.0 and 10.0";
NSDictionary *dict = [NSDictionary dictionaryWithObject:msg forKey:NSLocalizedDescriptionKey];
NSError *error = [[[NSError alloc] initWithDomain:@"Shapes" code:10 userInfo: dict] autorelease];
*outError = error;
}
return NO;
}
return YES;
}
有迹象表明,让我困惑了两件事因为我甚至不知道他们在技术上被称为什么,似乎无法在Google中找到。
首先一个是在该方法的签名中使用两个星号的**
:
- (BOOL)validateRadius:(id *)ioValue error:(NSError **)outError {
第二个是使用单个星号*
的当上的方法调用的reciever:
[*ioValue floatValue]
我之前没有看到这两件事情,所以我想知道他们是关于什么的。刚刚6个月前开始iOS编程。
任何对在线文档的解释或指示都非常受欢迎。
考虑'* outError =错误;'这说明了为什么“传递指针指针”('**')是有用的。 – 2011-05-29 22:31:22