2016-05-19 8 views
0

Работает на моем приложении с флеш-картой. Полностью сбит с толку. Много возможно существенной информации.Проект Xcode работает в симуляторе, а не на устройстве

У меня есть версия, которая работает безупречно, как в симуляторе, так и на нескольких устройствах. Но я ошибся при отправке в App Store (неправильный идентификатор и имя Bundle), поэтому я создал новый проект и скопировал и вставил код и раскадровку. (Я не просто перетащил файлы, я их воссоздал и копировал код.)

Первая проблема заключалась в том, что она не строилась, потому что «дублировать символ _answers в« RootViewController.o »и« DescendantViewController.o ». И было 3 таких повторяющихся символа.

Да, я объявил NSMutableArray *answers во внедрении обоих моих RootVC и DescedantVC, поэтому я признаю это подозреваемым, за исключением ... это тот же самый код, что и в версии, которая работает.

Тем не менее, я видел возможность очистить свой код, поэтому я создал @property (weak, nonatomic) NSMutableArray *answers в своем RootVC и изменил код в корневом и потолочном контроллерах View для ссылки self.answers. Он компилируется без каких-либо проблем.

Он отлично работает в тренажере. Поскольку я только что скопировал всю базу кода в новый проект, я тестирую все - никаких проблем. Я очень взволнован, поэтому я делаю все шаги, чтобы отправить в App Store, кроме последнего, «Отправить для обзора».

Я хочу показать своему другу, поэтому я прикладываю свой iPhone 6, скомпилирую его, запускаю и когда выбираю «Играть» - сбой!

Следующая линия является виновником.

answers = [self pickWrongAnswersIgnoringCard:questionCard];

И в имитаторе и на устройстве, последняя строка этого метода является:

return wrongAnswers;

В обоих случаях wrongAnswers представляет собой массив с 3 пунктов.

В тренажере answers также имеет 3 позиций. На моем iPhone answers - это нуль.

Кто-нибудь знает, что это может быть? Единственное, что я могу придумать, это то, что я создал проект, который работает более года назад, и тот, который терпит неудачу сегодня, поэтому, возможно, некоторые настройки Apple в этих двух проектах различны? В противном случае я в тупике.

Надеюсь, у кого-то есть идея.

Спасибо.

P. S. Я смотрел другие сообщения здесь, на StackOverflow, но никто мне не помог.

EDIT: функция, по запросу:

-(NSMutableArray *)pickWrongAnswersIgnoringCard:(FlashCard *)questionCard { 
    NSMutableArray *wrongAnswers = [[NSMutableArray alloc] init]; 

    FlashCard *randomCard; 

    for (int i=1; i<4; i++) { 
    do { 
     randomCard = [self pickARandomCardFromDeck:wrongAnswersSource]; 
    } while ([randomCard.name isEqualToString:questionCard.name] || [wrongAnswers containsObject:randomCard]); 

    [wrongAnswers addObject:randomCard]; 
    } 

    return wrongAnswers; // device or simulator, wrongAnswers.count = 3 
} 
+0

Можете ли вы отправить сообщение, где вы получаете возврат за неправильные уведомления? – Siriss

+0

Включили ли вы зомби в отладочной версии? – bneely

+0

Линия, которую вы указываете как преступник, не должна вызывать аварии, по крайней мере, не сама по себе. Что на самом деле не удается? (Stack trace?) –

ответ

0

Я понял это, даже если я не в полной мере понять.

Я изменил с @property (weak, nonatomic) на @property (strong, nonatomic).

Это решило это для меня.

Работает как на симуляторе, так и на устройстве.

+0

Ошибки управления памятью часто ведут себя по-разному в зависимости от того, где вы запускаете код. –

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