iPhone错误:线程1:程序接收到的信号:“SIGABRT”
问题描述:
我已经在应用程序delegate.h中定义了一个属性,并将其合成到delegate.m文件中以使其成为全局变量并从整个应用程序中获取其值:iPhone错误:线程1:程序接收到的信号:“SIGABRT”
@property (strong, nonatomic) NSArray *accountsList;
在mainviewcontroller我的NSArray指定账户*值,这样这个全局值:
:((VektorAppDelegate *)[UIApplication sharedApplication].delegate).accountsList = accounts;
而在pickerviewcontroller我将其值改为像另一个数组分配
accountsArray = ((VektorAppDelegate *)[UIApplication sharedApplication].delegate).accountsList;
然后将其分配给一个选择器视图:
- (NSInteger)pickerView:(UIPickerView *)thePickerView numberOfRowsInComponent:(NSInteger)component {
return [accounts count]; //Thread 1: Program received signal: "SIGABRT"
}
现在,这里在这一点上我点,我得到一个错误,我的应用程序崩溃,有时工作,有时它给错误。我没有得到什么问题。
答
我有一个想法...做一个方法来检查两个数组是否相等。因此,像
if ([(Appdelegate*).....delegate.array isEqualToArray:Accountslist]) {NSLog:(@"equal")}
如果的NSLog的正确,你就完蛋了......但是,如果没有,那么它只是意味着你没有正确初始化您的数组。
答
这里输入您的代码您收到的SIGABRT。
所以,首先你试试就知道了原因,SIGABRT的背后,您可以轻松地修复指出SIGABRT。
我想告诉,SIGABRT基本上发生了很多原因。
1),当我们试图访问解除分配(释放)实例/对象
2)或发送释放消息,释放已经(发行日期)实例/对象。
3)还有更多...
因此,对于了解背后SIGABRT消息的确切原因。
应设置在环境变量NSZombieEnabled标志,YES。
您可以设置此NSZombieEnabled如下
* *产品 - >新方案 - >环境变量
在环境变量点击 “+” 按钮**
Then Type NSZombieEnabled and Set YES对应于其标志值。
我希望它会帮助你修复那个SIGABRT问题。
你在哪个类中调用pickerview?因为你正在使用'[accounts count]',在你命名为'accountsArray'之前。那么你为什么不使用'return [accountsArray count];'? – Jules 2012-01-03 08:24:46
accountsArray在主视图中用于检查是否有一个或多个帐户。并且帐户正在选取器视图帐户中使用,其中所有这些帐户都将显示在选取器视图中,以便用户选择他的帐户 – AppDeveloper 2012-01-03 08:31:25
是否有可能在某个时刻发布了它?在numberofRows方法上返回nil不会使其崩溃,但将NULL传递给count方法会。 – CodaFi 2012-01-03 08:37:32