我正在尝试显示或隐藏您可以为联系人采取的操作的按钮,具体取决于是否存在某些数据,即有电话号码或facebookid。下面的代码编译但然后在buttonsToHide行崩溃。
NSMutableArray *buttonsToShow = [NSMutableArray arrayWithObjects:self.facebookButton,self.callButton, self.smsButton, self.emailButton, self.deleteButton, nil];
NSMutableArray *buttonsToHide = [NSMutableArray array];
NSLog(@"Facbook id is:%@",self.contact.facebookID);
if (self.contact.facebookID == nil) {
[buttonsToShow removeObject:self.facebookButton];
//Following line crashes and shows up in green
[buttonsToHide addObject:self.facebookButton];
}
欢迎任何有关导致其崩溃的建议。
答案 0 :(得分:0)
它几乎肯定不会在第二个阵列分配上崩溃,但在第一个,并且崩溃几乎肯定是由初始化中的元素为nil引起的。
NSMutableArray *buttonsToShow;
if (self.facebookButton && self.callButton && self.smsButton && self.emailButton && self.deleteButton) {
buttonsToShow = [NSMutableArray arrayWithObjects:self.facebookButton,self.callButton, self.smsButton, self.emailButton, self.deleteButton, nil];
} else {
buttonsToShow = [NSMutableArray array];
NSLog(@"didn't initialize the array because placing nil objects in an array causes a crash");
}
这些按钮是IBOutlets吗?可能没有联系起来?
答案 1 :(得分:0)
似乎self.facebookButton
是零。如果它们是以编程方式编写的代码或连接到界面构建器中的视图,则验证它们是否已初始化。
以下代码可以避免崩溃。但您可能想要检查为什么self.facebookButton
为nil并修复
if (self.contact.facebookID == nil && self.facebookButton) {
[buttonsToShow removeObject:self.facebookButton];
//Following line crashes and shows up in green
[buttonsToHide addObject:self.facebookButton];
}