簡體   English   中英

EXC_BAD_ACCESS問題

[英]EXC_BAD_ACCESS issue

我在屏幕上將員工記錄顯示為行,我希望可以選擇刪除這些記錄,並在單擊按鈕時顯示一組新記錄

我的代碼的結構/組織如下:在我的控制器.h中

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;

這是填充了數據並顯示在屏幕上的“視圖”

我現在想清理/刪除這些對象,所以我嘗試了如下操作:(這會導致異常)

int yyy = [employeeScrollViewArray count];
 for(int xxx=yyy-1;xxx>=0;xxx--){
    if ([[[employeeScrollViewItems subviews]objectAtIndex:xxx ]isKindOfClass:[UIView class]]) {
     [[[employeeScrollViewItems subviews ]objectAtIndex:xxx] removeFromSuperview];
    }
    [employeeScrollViewArray removeObjectAtIndex:xxx];
   }//for

這是我能夠刪除這些對象的唯一方法如果嘗試單獨刪除它們,則會收到此錯誤

但是,即使刪除了項目並通過了代碼,它仍然會拋出此錯誤。如果刪除了此代碼,則說明一切正常,但是我無法刪除這些對象

請幫忙 !

我不知道錯誤來自何處,但我有一些一般性建議:

將對象添加到數組后,應釋放它。

[employeeScrollViewArray addObject:empDetail];
[empDetail release];

數組的條目將由數組本身保留。 現在在清理方法( dealloc )中釋放數組: [employeeScrollViewArray release] 那也將釋放所有包含的對象。

通常,沒有必要清理視圖層次結構。 但是,如果您要刪除employeeScrollViewItems所有子視圖,則可以這樣做:

for (UIView* subview in [employeeScrollViewItems subviews]) {
    [subview removeFromSuperview];
}

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM