0

完了ハンドラーの応答を静的変数に保存するにはどうすればよいですか? サンプルコードでは

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
4

1 に答える 1