自动引用计数 - 使用同一实现文件中的其他值

时间:2012-07-10 11:21:36

标签: objective-c xcode automatic-ref-counting

我正在使用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路径方法返回一个空白,几乎就像忘记它存在一样。任何帮助,将不胜感激。谢谢。艾伦

2 个答案:

答案 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"]];
}