Objective c 第二条NSLog消息获胜';t打印

Objective c 第二条NSLog消息获胜';t打印,objective-c,Objective C,由于某些原因,我无法将第二条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 *oldSt

由于某些原因,我无法将第二条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;
}
}
#导入
int main(int argc,const char*argv[]
{
@自动释放池{
//创建要devowelize的字符串数组和新字符串的容器
NSArray*oldStrings=[NSArray阵列,其对象为:@“泡菜”@“雷管”@“大书呆子牧场”@“密西西比”,无];
NSLog(@“旧字符串:%@”,旧字符串);
NSMutableArray*新闻字符串=[NSMutableArray];
//创建将从字符串中删除的字符列表
NSArray*元音=[NSArray数组,其对象为:@“a”、“e”、“i”、“o”、“u”、“nil];
//声明块变量
void(^devowleizer)(id,整数,BOOL*);
//将块指定给变量
DevWelizer=^(id字符串,整数i,BOOL*stop)
{
NSMutableString*newString=[nsmutablestringwithstring:string];
//迭代元音数组,将每个元音的出现替换为
//空字符串
for(元音中的NSString*s){
NSRange fullRange=NSMakeRange(0,[newString length]);
[newString replaceCurrencesofstring:s
带字符串:@“”
选项:NSCaseInsensitiveSearch
范围:全范围];
[newStrings addObject:newString];
};//块赋值结束
//使用我们的块迭代数组
[oldStrings enumerateObjectsUsingBlock:DevWelizer];
NSLog(@“新字符串:%@”,新闻字符串);
};
返回0;
}
}

您永远不会调用DevWelizer块。因此,第二个NSLog永远无法执行。

您永远不会调用DevWelizer块。因此,第二个NSLog永远无法执行。

您创建了一个块并将其分配给了
Devwelizer
。看起来您已将对该块的调用放在块内,但该块不起作用。

您创建了一个块并将其分配给了
DevWelizer
。看起来你已经把你的电话打到了那个街区里面,这是行不通的

NSLog(@"new strings: %@", newStrings);
这条线也在区块内工作。你没有叫积木除泥器那就是它不起作用的地方


这条线也在区块内工作。您没有调用块devowelizer,这就是它不工作的原因。

这是正确答案,块
devowelizer
从未调用过。您刚刚定义了块,就是这样,块本身无法执行;我不是在传递块时使用以下行:[oldStrings enumerateObjectsUsingBlock:DevWelizer]?该行正在块中传递,但该行仅在块执行时才会执行。可以将其视为编写一个函数,然后在其内部调用该函数。只有在函数外部有东西调用该函数时,才会首先调用该函数。该行在块声明中!:)这是正确答案,块
devolvelizer
从未调用过。您刚刚定义了块,就是这样,块本身无法执行;我不是在传递块时使用以下行:[oldStrings enumerateObjectsUsingBlock:DevWelizer]?该行正在块中传递,但该行仅在块执行时才会执行。可以将其视为编写一个函数,然后在其内部调用该函数。只有在函数外部有东西调用该函数时,才会首先调用该函数。该行在块声明中!:)