我正在使用ARC和TWRequest。我已成功从twitter返回搜索并创建了一系列结果。这是我的代码......
NSArray *results = [dict objectForKey:@"results"];
//Loop through the results
NSMutableArray *twitterText = [[NSMutableArray alloc] init];
for (NSDictionary *tweet in results)
{
// Get the tweet
NSString *twittext = [tweet objectForKey:@"text"];
// Save the tweet to the twitterText array
[twitterText addObject:twittext];
}
NSLog(@"MY ************************TWITTERTEXT************** %@", twitterText );
我的问题是,我想稍后在cellForRowAtIndexPath下的.m文件中使用twitterText,但是一旦完成循环(如上所述),它就会在ARC下发布。
我已经在我的.h文件中将属性设置为强大(以及在循环之前将其声明为高级 - 不确定我是否可以这样做但是如果我没有如上所述声明,则twitterText返回NULL)。
在循环之后直接打印日志,如上所示打印twitterText数组很好,但同样的登录cellForRowAtIndex路径方法返回一个空白,几乎就像忘记它存在一样。任何帮助,将不胜感激。谢谢。艾伦
答案 0 :(得分:1)
您正在本地上下文中声明您的变量twitterText。因此ARC在方法完成后丢弃它。如果你想在该方法的范围之外使用它,你应该让它像这样声明。
.h
@property (nonatomic, strong) NSMutableArray *twitterText;
.m
@synthesize twitterText = _twitterText; // ivar optional
_twitterText = [[NSMutableArray alloc] init];
for (NSDictionary *tweet in results) {
// Get the tweet
NSString *twittext = [tweet objectForKey:@"text"];
// Save the tweet to the twitterText array
[_twitterText addObject:twittext];
}
-(void)someOtherMethod {
NSLog(@"twitterText: %@", _twitterText);
}
答案 1 :(得分:0)
让NSMutableArray *twitterText
@property
公开,因为它肯定会在函数生命周期结束后释放。
如果没有ARC保留它将工作正常,它对我有用。
编辑
尝试
.H
@property (strong, nonatomic) NSMutableArray *twitterText;
的.m
@synthesize twitterText = _twitterText;
在“ViewDidLoad”委托制作
中self.twitterText = [[NSMutableArray alloc]init];
在你的函数make
中for (NSDictionary *tweet in results)
{
[self.twitterText addObject:[tweet objectForKey:@"text"]];
}