私はObjective-cに非常に慣れていないので、ブロックをもう少しよく理解しようとしています。私自身の仕事として、さまざまな方法でfizz-buzzを書こうとしています。
現在ブロックを使用していますが、まだ取得していない構文の問題が発生しました。
次の機能しない関数では、intを渡して、NSStringの型を返します。
NSString (^whichMessage)(int) = ^(int num) {
return @"Test";
};
ただし、次のようなエラーが発生します。
Incompatible block pointer types initializing 'NSString (^_strong)(int)' with an expression of type 'NSString *(^)(int)'
誰かが私のサンプルコードの問題が何であるか、そしてまた適切な形式が何であるかを説明できますか?
私はここのドキュメントに従っています:http://developer.apple.com/library/ios/#documentation/cocoa/Conceptual/Blocks/Articles/bxGettingStarted.html#//apple_ref/doc/uid/TP40007502-CH7-SW1
(わかりやすくするために、リンク先のページのサンプルコードを次に示します)
int multiplier = 7;
int (^myBlock)(int) = ^(int num) {
return num * multiplier;
};
ページ上部の図を見て、ブロックタイプをNSStringに変更し、リターンタイプもNSStringに変更することで、機能すると思いました。しかし、残念ながら、そうではありません。