我想了解如何在iOS上使用块。我已经阅读过苹果公司的文档,但像往常一样,它们含糊不清,并且没有提到几个关键信息。我也搜索了没有成功。这是我正在尝试做的一项练习来理解这一点。试图了解iOS上的块
我已经创建了一个块来读取一个字符串,并将字符串与先前的读取进行比较。如果字符串不相同,则返回YES,如果它们相同,则返回NO。
这是我如何做:
我宣布这对.H
BOOL (^differentStrings)(void);
我在的viewController
__block NSString * previousString;
__block NSString * currentString;
differentStrings = ^(void){
currentString = [self getString];
NSLog(@"%@", currentString); // not printing anything on console
if (![currentString isEqualToString:previousString]) {
previousString = currentString;
return YES;
} else {
return NO;
}
};
宣布这对.M,里面viewDidLoad中这是怎么了我使用:我有一个线程可以做到这一点:
if (differentStrings)
NSLog (@"strings are different);
这是我的问题:
- 块总是返回YES(字符串不同)
- 我不舒服,宣布这里面videDidLoad。我应该如何声明这一点,所以我可以在全球范围内使用它作为一种方法?我应该把这个像我会用一种方法吗?
- 我在块内调用一个方法“getString”。可以吗?
- 我发现奇怪的是在.m上声明块变量。正如我所看到的,我应该在.h上声明块变量,然后在.m上使用它们。我试图做到这一点,但收到了一个错误。
- 我已经在块的第一行设置了一个调试点,但它并没有停在那里;
- 块内的NSlog行不打印任何东西。是不是被称为块?
你们能帮我解决吗?
感谢一个很好的介绍,该录像带帮助理解它更深,但即使在看完之后我仍然有同样的问题,这个阶级也没有提到。 – SpaceDog 2011-01-06 14:02:15