好吧,真的很尴尬地宣布我把问题都弄错了。看起来这个对象首先已经超出了范围。 myObject实际上是[myObjectList objectForIndex:index]其中myObjectList是NSMutableArray * myObjectList。这不是一个综合财产。目的是从NSObject的派生的类(@interface对象:NSObject的)
- (void)tableView:(UITableView *)tableView didSelectRowAtIndexPath:(NSIndexPath *)indexPath
{
for(Object* p in myObjectList)
{
NSLog(@"%@", p.name); //this returns a garbled message
}
MyObjectDetailViewController * vc = [[MyObjectDetailViewController alloc] initWithStyle:UITableViewStylePlain];
vc.object = [myObjectList objectAtIndex:indexPath.row];
[self.navigationController pushViewController:vc animated:YES]; //when i hover over "vc" in debugger, it shows that vc.object is defined(i see my name variables) but when i hover over myObjectList in the previous line, the objects say "out of scope"
[vc autorelease];
}
要覆盖所有地面,这里是阵列被实例化。这个函数是一个来自sqlite的sqlite3_exec的回调函数。
int callback (void* context, int count, char** values, char** columns)
{
NSMutableArray *list = (NSMutableArray*)context;
Object *obj = [[Object alloc] initWithName:[NSString stringWithUTF8String:values[kName]]];
[list addObject:obj];
[obj release];
NSLog(@"After release");
for(Object *p in list)
{
NSLog(@"%@", p.name); //this prints out okay
}
return SQLITE_OK;
}
我希望这会让问题更清楚一点。 myObjectList超出范围的事实,但我似乎能够检索其对象是真的很奇怪...
此外,为了澄清,我在这里使用声明的属性,所以在我的aViewController接口中,我有: @property(nonatomic,retain)Object * object; //也sysnthesized – Ying 2010-02-09 17:14:20
什么类是对象?或者你的意思是NSObject? – 2010-02-09 17:21:25
是myObject被声明为保留属性吗? – willcodejavaforfood 2010-02-09 18:42:57