Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/actionscript-3/6.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Iphone EXC\u坏访问问题_Iphone - Fatal编程技术网

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中

MyController.m文件中对象的初始化和释放如图所示: 在方法中

- (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];
}