我的核心數據讀一本書,在某些時候筆者有此驗證方法使用一個或多個星號:困惑在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