Objective C - 在viewDidLoad中设置变量并在其他地方使用它

时间:2011-06-17 10:11:07

标签: iphone objective-c variables viewdidload

另一个客观问题。可能也是一个简单的......

在我的viewDidLoad方法中,我正在设置一个变量。我需要在- (void)tableView:(UITableView *)tableView willDisplayCell:(UITableViewCell *)cell forRowAtIndexPath:(NSIndexPath *)indexPath内访问它,但我接收到以下错误,我真的不知道如何排序它!

- [CFString intValue]:发送到解除分配的实例0x592dcb0的消息

- (void)viewDidLoad
{   
    //code to get json is here
    totalInCategory = [parsedJson objectForKey:@"TotalInCategory"];
    NSLog(@"totalincat %i",[totalInCategory intValue]);

    [super viewDidLoad];
}

- (void)tableView:(UITableView *)tableView willDisplayCell:(UITableViewCell *)celllforRowAtIndexPath:(NSIndexPath *)indexPath
{
    NSLog(@"totalincat %i",[totalInCategory intValue]);

    if((indexPath.row == [myArray count]-1)&&(indexPath.row < [totalInCategory intValue]))
    {
        //code to get more rows
        [self.tableView reloadData];
    }
}

我有NSString * totalInCategory;建立并合成。

totalInCategory在viewDidLoad中很好(据我所知),但是没有其他地方......任何想法都会非常方便!

4 个答案:

答案 0 :(得分:4)

保留数据......

totalInCategory = [[parsedJson objectForKey:@"TotalInCategory"] retain];

objectForKey返回一个自动释放的对象,如果要使用它,则需要保留该对象。不要忘记在dealloc中添加[totalInCategory release];

答案 1 :(得分:2)

放:

[totalInCategory retain]位于totalInCategory = [parsedJson objectForKey:@"TotalInCategory"];

下方

这将保留变量,该变量目前由objectForKey方法自动释放。

答案 2 :(得分:1)

在不知道parsedJson的类型的情况下我无法确定,但似乎你错过了一个保留。

 totalInCategory = [[parsedJson objectForKey:@"TotalInCategory"] retain];

在类的添加

的dealloc方法中
 [totalInCategory release];

如果你还没有,你应该也可以看看iOS Memory Management Programming Guide

答案 3 :(得分:0)

totalInCategoryself一起使用。如果您在属性声明中指定了保留

self.totalInCategory = [parsedJson objectForKey:@"TotalInCategory"];