ブロックについてかなりの時間をかけて読んできましたが、何らかの理由でブロックを完全に理解するのは非常に困難です。私は初心者の開発者ですが、ブロックは私が出会った最初の本当の「ブロック」なので、助けてくれるかもしれません。
オブジェクト(ViewControllerのインスタンス)が(クラスメソッドを介して)クラスと通信している場合があります-これは、データを要求/取得するために設定したユーティリティクラスです)。ブロックを使ってコールバックのあるメソッドを実装したい。これが私のコードに基づいた現在の「理解」です。
- ブロックはメソッド引数として渡すことができます。
- ブロックは関数のように呼び出すことができます。
OK、これが私のユーティリティ クラスの (簡略化された) メソッドです。
+ (void)getDataWithCompletion:(void (^)(BOOL))completion {
//Some code...
completion(YES);
}
これは、viewController からメソッドを呼び出す方法です。
[ClassName getDataWithCompletion:^(BOOL gotData) {
if (gotData) {
NSLog(@"Called");
}
}];
当然のことながら、コンソールに NSLog が出力されることを期待していましたが、残念ながら...ここで何か間違ったことをしていることはわかっています。誰か指摘してもらえませんか? 新人レベルの説明は大歓迎です。