0

我正在将 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 文件中将该属性设置为 strong (以及在循环之前在上面声明它 - 不确定我是否可以这样做,但如果我没有像上面那样声明 twitterText 返回 NULL)。

在上述循环之后直接打印日志可以很好地打印 twitterText 数组,但是 cellForRowAtIndex 路径方法中的相同日志返回一个空白,几乎就像它忘记了它的存在一样。任何帮助,将不胜感激。谢谢。艾伦

4

2 回答 2

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);
}
于 2012-07-10T13:37:15.403 回答
0

NSMutableArray *twitterText @property公开,因为它肯定会在函数生命周期结束后发布。如果没有 ARC 保留,它将正常工作并且对我有用。编辑尝试.h

@property (strong, nonatomic) NSMutableArray *twitterText;

.m

@synthesize twitterText = _twitterText;

在“ViewDidLoad”委托中

self.twitterText = [[NSMutableArray alloc]init];

在你的函数中

for (NSDictionary *tweet in results)
{
    [self.twitterText addObject:[tweet objectForKey:@"text"]];
}
于 2012-07-10T13:37:52.233 回答