Objective c 第二条NSLog消息获胜';t打印
由于某些原因,我无法将第二条NSLog消息输出到控制台。我已经找到了问题,但找不到。提前谢谢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
#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]?该行正在块中传递,但该行仅在块执行时才会执行。可以将其视为编写一个函数,然后在其内部调用该函数。只有在函数外部有东西调用该函数时,才会首先调用该函数。该行在块声明中!:)