[英]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.