-[NSScanner scanString:intoString:]
NO
文字列の先頭からスキャンしようとしていて、部分文字列 'Super' がそこにないため、 が返されます。
これを使用して、何が起こるかを説明します。
BOOL success;
NSString *whatDidIGet;
// 'success' is YES, and 'whatDidIGet' contains "Test\n"
whatDidIGet = nil;
success = [scanner scanUpToString:str intoString:&whatDidIGet];
// 'success' is YES, and 'whatDidIGet' contains "Super"
whatDidIGet = nil;
success = [scanner scanString:str intoString:&whatDidIGet];
// 'success' is NO, and 'whatDidIGet' is nil.
whatDidIGet = nil;
success = [scanner scanUpToString:str intoString:&whatDidIGet];
最初の改行文字が無視される理由は、スキャナー (設定した方法) がデフォルトで空白と改行を無視し、最初の改行をスキップするためです。最後に、やはり、空白と改行をスキップするため、whatDidIGet
nil です。
編集:
スキャナーをインスタンス化した直後にこれを挿入した場合:
[scanner setCharactersToBeSkipped:[[[NSCharacterSet alloc] init] autorelease]];
whatDidIGet
1 回目と 3 回目のスキャンですべての改行文字が表示されます。
益々のご活躍をお祈り申し上げます。