2012-01-03 2 views
0

Я определил свойство в приложении delegate.h и синтезировал его в файле delegate.m, чтобы сделать его глобальным и назначить и получить его значение из всего приложения:Ошибка iPhone: Thread 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" 
} 

Теперь вот в этот момент я указываю я получаю сообщение об ошибке, и мое приложение рушится, иногда это работает, и иногда это дает ошибку. Я не понимаю, в чем проблема.

+0

В каком классе вы называете pickerview? Потому что вы используете '[count count count' ', где до того, как вы назвали его' accountArray'. Итак, почему вы не используете 'return [accountsArray count];'? – Jules

+0

accountsArray используется в основном представлении, чтобы проверить, есть ли одна учетная запись или больше. и учетные записи используются в учетной записи выбора, где все эти учетные записи будут отображаться в режиме выбора, чтобы пользователь мог выбрать свою учетную запись. – AppDeveloper

+0

Возможно ли, что вы ее выпустили в какой-то момент? Возврат nil по методу numberofRows не приведет к его краху, но передача NULL методу count будет. – CodaFi

ответ

0

У меня есть идея ... Сделайте способ проверить, равны ли оба массива.Так что-то вроде

if ([(Appdelegate*).....delegate.array isEqualToArray:Accountslist]) {NSLog:(@"equal")} 

Если NSLog-х правильно, вы влипли ... Но если это не так, то это просто означает, что вы не правильно инициализировать ваш массив.

2

Здесь в вашем коде Вы получили SIGABRT.

Итак, во-первых вы будете стараться, чтобы узнать причину этого SIGABRT, вы можете легко исправить, что SIGABRT.

Я хотел бы сказать, SIGABRT в основном встречается Для многих Причина.

1), когда мы пытаемся получить доступ к высвобождены (выхода) Instance/Объект

2) или отправив сообщение выпуска к выпуску уже высвобождены (отпущена) Instance/Object.

3) И многое другое ...

Так, зная точную причину позади этого SIGABRT сообщение.

Вы должны установить NSZombieEnabled флаг Чтобы ДА в переменной окружения.

вы можете установить этот NSZombieEnabled Как Ниже

* * Product-> Новый схемное> Переменная окружения

При переменной среды Нажмите на кнопку "+" **

Затем Тип NSZombieEnabled и комплект ДА Соответствует его значению флага.

Надеюсь, это поможет вам устранить этот SIGABRT Prob.

Смежные вопросы