我想了解如何在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