我對Objective-c非常陌生,並試圖更好地理解塊。作爲一個我自己的任務,我試圖用各種方法寫出嘶嘶聲。將int傳入函數,返回NSString
我目前正在使用塊,但我遇到了語法問題,我還沒有得到。
在下面的非工作函數中,我想傳入一個int並返回一個NSString類型。
NSString (^whichMessage)(int) = ^(int num) {
return @"Test";
};
但是我得到一個錯誤,指出:
Incompatible block pointer types initializing 'NSString (^_strong)(int)' with an expression of type 'NSString *(^)(int)'
誰能解釋我的示例代碼是什麼問題,也是適當的形式是什麼?
(爲了清楚起見,這裏是鏈接頁面上的示例代碼)
int multiplier = 7;
int (^myBlock)(int) = ^(int num) {
return num * multiplier;
};
在頁面的頂部由圖形去,我認爲通過將塊類型更改爲NSString,並將返回類型也變爲NSString,它就可以工作。但唉,事實並非如此。
謝謝,我對此表示讚賞。你也可以解釋爲什麼使用的NSString時所需的指針聲明,但不是當返回類型是int像原來的例子蘋果文檔頁面上? – Geuis 2012-07-19 09:02:44
的int是標量類型,其通常與基於堆棧存儲使用(不必須是)。對象(在Objective-C中)總是在堆上創建,然後傳遞對該對象的引用。 – 2012-07-19 09:08:30
+1非常清晰的格式:) – 2012-07-19 09:11:43