// targ_url is passed in as an address to a NSString pointer.
- (long) analyse_scan_result : (NSString *)scan_result target_url : (NSString **)targ_url
{
NSLog (@" RES analyse string : %@", scan_result);
NSRange range = [scan_result rangeOfString : @"http://"
options : NSCaseInsensitiveSearch
];
// **** The following retain is the first retain
// **** statement in this method.
if (range.location == NSNotFound)
{
*targ_url = @"";
[*targ_url retain];
NSLog(@" FND string not found");
return 0;
}
NSString *sub_string = [scan_result substringFromIndex : range.location];
range = [sub_string rangeOfString : @" "];
if (range.location != NSNotFound) {
sub_string = [sub_string substringToIndex : range.location];
}
NSLog(@"FND sub_string = %@", sub_string);
*targ_url = sub_string;
// ** The following retain is the second retain
// ** statement in this method.
[*targ_url retain];
return [*targ_url length];
}
この質問は、私が以前に尋ねた質問に似ており、関連しています(十分に解決されているようです)。繰り返しますが、上記の方法は、保持ステートメントが追加された後にのみ機能します。上記で 2 つ追加されていますが、一度に実行されるのは 1 つだけです。
このルーチンが行うことは、バーコード スキャナーの出力から "http://" 文字列を見つけて返すことです。私の質問は、retain ステートメントが必要または適切かどうかです。
どなたか詳しい方教えていただければ幸いです...