从数组中检索Struct的问题

时间:2010-04-12 14:13:52

标签: objective-c cocoa

想知道是否有人可以帮助我完成以下任务......

我有一个结构

typedef struct {
    NSString *section;
    NSString *row;
} myStructDef;

我使用函数参数“value [x]”填充并写入NSMUtableArrays本地“Arr2”的NSMutableArray iVar“Arr1”:

myStruct.section = [NSString stringWithUTF8String:(char *)values[0]];
for (int i=1; i < count; i++) {
    myStruct.row = [NSString stringWithUTF8String:(char *)values[i]];
    [Arr2 addObject:[NSValue valueWithBytes:&myStruct objCType:@encode(myStructDef)]];
    [Arr1 addObject:Arr2];
}

编写数组似乎工作正常(调试器显示数组构建,我可以使用

正确检索NSValue
[[Arr2 objectAtIndex:i-1] getValue:&myStruct];

添加到上面的for循环中。

使用以下函数检索后续函数中的数组值时出现问题:

- (NSString *)tableView:(UITableView *)tableView titleForHeaderInSection:(NSInteger)section {
    myStructDef myStruct;
    [[[Arr1 objectAtIndex:section] objectAtIndex:0] getValue:&myStruct];
    return myStruct.section;
}

虽然正确检索了step1“[Arr1 objectAtIndex:section]”,但步骤3“... getValue:&amp; myStruct]”似乎失败了。 我也尝试将3个动作拆分为单独的步骤,也就是当我可以看到在步骤2中返回一个Object时。 getValue:失败。

任何线索我做错了什么?

欢呼声    iFloh:)

1 个答案:

答案 0 :(得分:2)

[NSString stringWithUTF8String:]返回您不拥有的字符串。您没有明确地保留它,并且C结构也不会隐式保留它。因此,您将NSString指针粘贴到数组中,但是当您尝试将它们拉回原点时,它们指向的字符串几乎肯定会被释放。