Iphone EXC\u坏访问问题
我在屏幕上以行的形式显示员工记录 我希望在单击按钮时可以删除这些记录并显示一组新记录 我的代码的结构/组织如下: 在我的控制器中Iphone EXC\u坏访问问题,iphone,Iphone,我在屏幕上以行的形式显示员工记录 我希望在单击按钮时可以删除这些记录并显示一组新记录 我的代码的结构/组织如下: 在我的控制器中 NSMutableArray *employeeScrollViewArray; IBOutlet UIScrollView *employeeScrollViewItems; 这里我有一个UIScrollView-employeeScrollViewItems,它由UI上显示的行填充 我还将这些行存储在数组-employeeScrollViewArray中 M
NSMutableArray *employeeScrollViewArray;
IBOutlet UIScrollView *employeeScrollViewItems;
- 这里我有一个UIScrollView-employeeScrollViewItems,它由UI上显示的行填充
- 我还将这些行存储在数组-employeeScrollViewArray中
- (void)viewDidLoad {
employeeScrollViewArray=[[NSMutableArray alloc]init];
我将在方法中释放此可变数组:
- (void)dealloc {
[employeeScrollViewArray release];
当视图加载时,我使用方法中用户定义类中的对象填充此数组:
EmployeeDetail.m文件
EmployeeDetail *empDetail=[[EmployeeDetail alloc]init];
empDetail.delegate=self;
[[NSBundle mainBundle] loadNibNamed:@"EmployeeDetail" owner:empDetail options:nil];
[self.employeeScrollViewItems addSubview:empDetail.view];
[employeeScrollViewArray addObject:empDetail];
EmployeeDetail.h的“h”文件的详细信息如下:
@interface EmployeeDetail : UIViewController
UIView *view;
这是用数据填充并显示在屏幕上的“视图”
我现在要清理/删除这些对象
所以我尝试了这样的方法:(这导致了异常)
这是我能够移除这些对象的唯一方法
如果我试图分别删除它们,就会出现此错误
然而,即使在我删除了项目和代码传递之后,它仍然会抛出这个错误
如果我删除了这段代码,那么事情就正常了,但是我不能删除这些对象
请帮忙 我不知道错误来自何处,但我有一些一般性建议: 应在将对象添加到数组后释放该对象
[employeeScrollViewArray addObject:empDetail];
[empDetail release];
数组的条目将由数组本身保留。在清理方法(dealloc
)中,现在只需释放数组:[employeeScrollViewArray release]
。这也将释放所有包含的对象
通常不需要清理视图层次结构。但是,如果要删除employeeScrollViewItems
的所有子视图,我会这样做:
for (UIView* subview in [employeeScrollViewItems subviews]) {
[subview removeFromSuperview];
}
感谢phix-我忘了说是的,我在添加到数组后释放了该对象-奇怪的是,我认为“EmployeeDetail”对象中的“视图”不知怎的干扰了实际的“EmployeeDetail”对象好的,我使用NSZombie运行了它,这就是我得到的-”一条Objective-C消息被发送到了一个deallocated对象(僵尸)地址:0x74aa4b0,可响应调用方显示为“-[UIView\u createLayerWithFrame:]
for (UIView* subview in [employeeScrollViewItems subviews]) {
[subview removeFromSuperview];
}