私の質問は、完了ハンドラー ブロックの外で参照を維持することです。まず、私の TableViewController を見てください:
@interface KMTweetTableViewController :
UITableViewController
@property (weak) ACAccount
*selectedAccount;
@property NSMutableArray *tweetTextBank ;
@end
の- (void)viewDidLoad
方法で、という名前のインスタンスKMTweetTableViewController
を作成しました。結局のところ、それはユーザーのタイムラインのために twitter を要求する責任があります。SLRequest
userTimeLineRequest
次に、ステータスの「テキスト」プロパティから配列を作成しようとしました。私はそれを行うためにこのコードを使用しました:
[userTimeLineRequest performRequestWithHandler:^(NSData *responseData, NSHTTPURLResponse *urlResponse, NSError *error) {
dispatch_async(dispatch_get_main_queue(), ^{
NSArray *userTimeline = [NSJSONSerialization JSONObjectWithData:responseData options:0 error:Nil];
int counter ; NSMutableArray *returner = [NSMutableArray alloc] ;
for (counter= 1 ; counter <= userTimelineCountReference ; counter++) {
NSDictionary *status = [userTimeline objectAtIndex: counter-1] ;
NSString *tweetText = [status objectForKey:@"text"];
[self.tweetTextBank addObject:tweetText ];
}
NSLog(@"%@" , self.tweetTextBank) ;
});
}];
ブロック内のコードはdispath_async
うまく機能しますが、NSLog()
起動するとnull
. tweetText
これは、 s の参照がブロックの最後で終了するためだと思いますdispath_async
...この場合、ARCが有効になっているときにその参照を維持するにはどうすればよいですか?
皆さん、ありがとうございました