我希望有人能告诉我为什么我错了。以下是我的代码片段:
TimeLogAppDelegate *appDelegate = (TimeLogAppDelegate *)[[UIApplication sharedApplication] delegate];
PickFromListViewController * pl = [[PickFromListViewController alloc] initWithNibName:@"PickList" bundle:nil];
pickList = pl;
[pickList setSearchItems:[appDelegate tableListMutableArray:type ] :NSLocalizedString(type,nil)];
pickList.callingViewController = self;
[pl release];
pickList.responseSelector = [[type lowercaseString] stringByAppendingString: @"Selected:"];
pickList.includeNone = YES;
pickList.includeNew = YES;
[self.navigationController pushViewController:pickList animated:YES];
正如你所看到的,我正在中途发布pl,只是为了解决这个问题。 'pickList'显然是一个PickFromListViewController并在Header中声明。我将其设置为属性(@property(非原子,保留)PickFromListViewController * pickList;)并且我@synthesize它。
我的问题是:
在pl发布之后,我得到一个BAD ACCESS错误,访问pickList,指示指针不再可用,但我认为pickList是合成的,它会被保留,直到我在dealloc发布它?有人可以告诉我为什么我错了吗?
非常感谢
答案 0 :(得分:2)
将pickList
属性设置为(nonatomic, retain)
仅适用于通过属性访问者访问该属性的情况,如下所示:
self.pickList = P1;
或
[self setPickList:P1];
如果只是为成员变量赋值:
pickList = P1;
您正在绕过属性访问器方法,因此不会发送retain
消息。