想知道是否有人可以帮助我完成以下任务......
我有一个结构
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:)
答案 0 :(得分:2)
[NSString stringWithUTF8String:]
返回您不拥有的字符串。您没有明确地保留它,并且C结构也不会隐式保留它。因此,您将NSString
指针粘贴到数组中,但是当您尝试将它们拉回原点时,它们指向的字符串几乎肯定会被释放。