完了ハンドラーの応答を静的変数に保存するにはどうすればよいですか? サンプルコードでは
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
に保存したいと言っています。どうすればそれを行うことができますか?そして、値が記憶されている客観的な意味での静的変数を意味します。items
getMyItems
上のスニペットが 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