完了ハンドラーの応答を静的変数に保存するにはどうすればよいですか? サンプルコードでは
GTLQueryTictactoe *query = [GTLQueryTictactoe queryForScoresList];
[service executeQuery:query completionHandler:^(GTLServiceTicket *ticket, GTLTictactoeScores *object, NSError *error) {
NSArray *items = [object items];
// Do something with items.
}];
誰でもアイテムを取得するために呼び出すことができるように、静的変数// Do something with itemsに保存したいと言っています。どうすればそれを行うことができますか?そして、値が記憶されている客観的な意味での静的変数を意味します。itemsgetMyItems
上のスニペットが class 内にある画像Dog。また、クラスPaperはアイテムを使用する必要があるため、getMyItemsクラス内から呼び出されPaperます。アイテムを Core Data に保存する必要がないことを望んでいます。
今、私の解決策にはstatic NSArray *items、ブロックの外側で宣言することが含まれていると考えています。しかし、他のメソッドはどのようにそれにアクセスするのでしょうか? それも良い解決策ですか?
そして、次の「解決策」はself、ブロック内で呼び出しているため、メモリリークを引き起こしますか?
@implementation Dog
static NSArray *items;
-(void) callToServer
{
GTLQueryTictactoe *query = [GTLQueryTictactoe queryForScoresList];
[service executeQuery:query completionHandler:^(GTLServiceTicket *ticket, GTLTictactoeScores *object, NSError *error) {
self.items = [object items];
}];
}
-(NSArray *) getMyItems
{
return items;
}
@end