Objective-Cで^ブロックを使用していくつかの問題が発生しました。私はブロック内からインスタンス変数を設定しようとしています - 私はこのトピックに関するいくつかのAppleのドキュメントを読みましたが、私はすべてを試したと感じています。^ブロックからプロパティにアクセスすると愚かな動作が発生する
@interface MyClass
{
// I have tried all possible combinations using __weak, __strong and __block.
__weak __block NSMutableArray *filenames;
}
// *.m
static ASIFormDataRequest *g_request = nil;
@implementation MyClass
-(void) funnymethod
{
filenames = [NSMutableArray array];
[filenames addObject:@"This is a string."];
NSLog(@"%@", filenames);
g_request = [InitializerClass initializeRequest];
[g_request setCompletionBlock:^
{
filenames = [NSMutableArray array];
[filenames addObject:@"This is another string."];
NSLog(@"%@", filenames);
}];
[g_object startASynchronous];
}
@end
上記のコードは、次の出力を与える: ( "これは文字列です。") (ヌル)
吸引します。だから私は__weak、__strong、__blockのさまざまな組み合わせを試しました。他のものは次のような出力を出します: ( "これは文字列です") ( "これは別の文字列です") しかし、大規模だが。完了ブロックは一度も終了しません。上のバーの開いている接続を示すアクティビティインジケータが回転し続け、画面が応答しなくなります。
ファイル名 - オブジェクトをブロック内から正しく設定するにはどうすればよいですか?前もって感謝します。どのような修飾子が何
補完ブロックが完全に空の場合はどうなりますか?私は、ASIFormDataRequestの問題は、このブロックで何をしているかとは何の関係もないと思います。 –