0

何らかの理由で、2 番目の NSLog メッセージをコンソールに出力できません。問題を探しましたが、見つかりません。前もって感謝します。

#import <Foundation/Foundation.h>

int main(int argc, const char * argv[])
{

  @autoreleasepool {

     // Create the array of strings to devowelize and a container for new ones
    NSArray *oldStrings = [NSArray arrayWithObjects:@"Sauerkraut", @"Raygun", @"Big Nerd Ranch", @"Mississippi", nil];
    NSLog(@"old strings: %@", oldStrings);
    NSMutableArray *newStrings = [NSMutableArray array];

    // Create a list of characters that we'll remove from the string
    NSArray *vowels = [NSArray arrayWithObjects:@"a", @"e", @"i", @"o", @"u", nil];

    // Declare the block variable
    void(^devowelizer)(id, NSUInteger, BOOL *);

    // Assign a block to the variable
    devowelizer = ^(id string, NSUInteger i, BOOL *stop)
    {
      NSMutableString *newString = [NSMutableString stringWithString:string];
      // Iterate over the array of vowels, replacing occurences of each with 
      // an empty string
      for (NSString *s in vowels) {
        NSRange fullRange = NSMakeRange(0, [newString length]);
                             [newString replaceOccurrencesOfString:s 
                                                        withString:@"" 
                                                           options:NSCaseInsensitiveSearch 
                                                             range:fullRange];
                             [newStrings addObject:newString];
                             }; //End of block assignment

      // Iterate over the array with our block
      [oldStrings enumerateObjectsUsingBlock:devowelizer];
      NSLog(@"new strings: %@", newStrings);

  };
    return 0;
}
}
4

3 に答える 3

2

devowelizer ブロックを呼び出すことはありません。したがって、2 番目の NSLog は決して実行できません。

于 2012-07-14T02:40:04.957 に答える
1

ブロックを作成して に割り当てましたdevowelizer。そのブロックへの呼び出しをブロックに配置したようですが、機能しません。

于 2012-07-14T02:40:34.523 に答える