如何将完成处理程序的响应保存在静态变量中?在示例代码中
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
来获取这些项目。我该怎么做?我的意思是客观c意义上的静态变量,其中值被记住。
图片上面的片段在 class 内Dog
。并且 classPaper
将需要使用这些项目,以便getMyItems
从 class 内部调用Paper
。我希望不必将项目保存在核心数据中。
现在我认为我的解决方案涉及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