簡體   English   中英

在線程1崩潰:EXC_BAD_ACCESS(目標C)

[英]Crashing at Thread 1: EXC_BAD_ACCESS (Objective C)

面臨的問題

(線程1:EXC_BAD_ACCESS)

。嘗試了很多,但我無法解決。 以下是我嘗試的代碼。 NSDictionary *thisRow = [self. EmployeeArr objectAtIndex:row];問題NSDictionary *thisRow = [self. EmployeeArr objectAtIndex:row]; NSDictionary *thisRow = [self. EmployeeArr objectAtIndex:row]; (在這里遇到問題,問題是“線程1:EXC_BAD_ACCESS”)。 請幫助我找到問題。 TIA

EmployeesVC.h

@interface Employees : UITableViewController<CacheDBDelegate,JsonServiceClsDelegate,UITableViewDataSource,UITableViewDelegate> {
    CacheDBCommands *cacheDB;
    MBProgressHUD *countryHUD;
    JsonServiceCls *JsonServicePostData;
    OverlayViewController *ovController;
    NSArray *IndexTitles;
    NSMutableArray *listOfItems;
    NSMutableArray *citylistOfItems;
    NSMutableArray *copyListOfItems;
    NSMutableArray *EmployeeArr;
    BOOL searching;
    BOOL letUserSelectRow;

}


@property (retain, nonatomic) NSMutableArray *EmployeeArr;
@end



EmployeesVC.m


#pragma mark -
#pragma mark Table view data source

- (NSInteger)numberOfSectionsInTableView:(UITableView *)tableView {
    // Return the number of sections.
    return 1;
}

- (NSInteger)tableView:(UITableView *)tableView numberOfRowsInSection:(NSInteger)section {
    // Return the number of rows in the section.
    return [self.EmployeeArr count];
}


- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath {

    NSUInteger row = [indexPath row];

    static NSString *MyIdentifier = @"tableCell";

    CustomMaster *cell = (CustomMaster *) [tableView dequeueReusableCellWithIdentifier:MyIdentifier];

    if (cell == nil) {

        NSArray *topLevelObjects = [[NSBundle mainBundle] loadNibNamed:@"CustomMaster" owner:self options:nil];

        for (id currentObject in topLevelObjects){
            if ([currentObject isKindOfClass:[UITableViewCell class]]){
                cell =  (CustomMaster *) currentObject;

            }
        }

    }

    **NSDictionary *thisRow = [self. EmployeeArr objectAtIndex:row];
    (Getting issue here, the issue is "Thread 1: EXC_BAD_ACCESS")**




    cell.label1.text = [thisRow objectForKey:@"Name"];
    if(_WSConstEmployeeID !=nil && ![_WSConstEmployeeID isEqual:@"0"] && ![_WSConstEmployeeID isEqual:@""] &&_WSConstEmployeeSelectedIndex ==row  )
    {
        cell .accessoryType=UITableViewCellAccessoryCheckmark;
    }
    else {
        cell .accessoryType=UITableViewCellAccessoryNone;
    }


    NSString *str=[thisRow objectForKey:@"Id"];
    NSString *stra=_WSConstEmployeeID;
    if ([str isEqualToString:stra]) {
        cell.accessoryType=UITableViewCellAccessoryCheckmark;
        cell.highlighted=YES;
    }else
    {
        cell.accessoryType=UITableViewCellAccessoryNone;

    }

    return cell;

}

這是當今時代的一些奇怪的代碼。

(1)在7年前,在@interface中聲明iVars已經過時了。 如果存在ivars,則它們位於.m中,通常在類擴展名中。 即便如此,大多數人都不會在所有申報的ivars,寧願@property

(2)iVars絕不能以大寫字母開頭。

(3)您擁有的一個財產被宣布為retain也是舊的做法; 通常是在ARC之前或ARC之外使用的。 您是否已開啟ARC?

如果您沒有打開ARC,那么您是否保留EmployeesArr 如果沒有,那就是您的崩潰。 如果您沒有打開ARC,為什么不呢? 你可能應該。

暫無
暫無

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

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