Мое приложение было отклонено, поскольку приложение не функционировало при проверке командой iPhone App Review Team. Предполагается, что приложение загружает слова в табличное представление, но не делало этого во время проверки. Однако приложение отлично работает на моем iPhone. Не могли бы вы дать мне какие-либо предложения относительно того, почему приложение будет работать отлично на одном iPhone, но не на iPhone, используемом в процессе обзора?iPhone Tableview не работает для тестеров Apple
Вот технические детали:
- Проект был составлен на MacBook Pro под управлением Mac OS X 10.6.2 (10C540)
- Xcode версии 3.2.1 64-битный Xcode IDE: 1613.0 Xcode Core: 1614,0 ToolSupport: 1591,0
- Base SDK Уровень версии 3.1.3
- Оптимизация: быстрый, самый маленький [-Os]
- My iPhone является 3GS с 3.1.3 OS
Я подозреваю, что метод - (UITableViewCell *) tableView: (UITableView *) tableView cellForRowAtIndexPath: (NSIndexPath *) indexPath не вызывается. Этот метод находится в делегате, который определяется как @interface WordTableViewController: GenericTableViewController, где класс GenericTableViewController определяется как @interface GenericTableViewController: UITableViewController.
Я подозреваю, что это было так, потому что в какой-то момент моей разработки отладка версии релиза на iPhone показала, что - (UITableViewCell *) tableView: (UITableView *) tableView cellForRowAtIndexPath: (NSIndexPath *) indexPath не был вызываемый, хотя он вызывается при отладке отладочной версии на одном и том же iPhone. Я разрешил этот вопрос после нескольких дней следствия. Я решил это, просто изменив уровень оптимизации в конфигурации выпуска, а затем изменив его обратно на исходное значение. Это было очень странно для меня.
Для получения последней информации о приложении, я воссоздал конфигурацию распространения, дублируя действующую конфигурацию выпуска. Затем я создал специальную конфигурацию, дублируя эту конфигурацию дистрибутива. Теперь приложение отлично работает на моем iPhone для выпуска, отладки и ad-hoc-распространения. Однако он не работает в Apple.
Ваши комментарии будут ОЧЕНЬ высоко оценены!
Спасибо, Стивен. Я не использую NSUserDefaults. Тем не менее, я задаюсь вопросом, имеет ли смысл мой последний комментарий к ответу Брэда. Я считаю, что я, возможно, ушел с чем-то, что мне не разрешили делать. А именно, освобождение NSMutableArray, а затем его повторное заполнение при каждом поиске. Я добавлю код в свой следующий комментарий. (Я почти вне места в этом блоке текста.) – user273565
// Используется для выпуска здесь: [list removeAllObjects]; while (sqlite3_step (statement) == SQLITE_ROW && (limit == NO || [list count] <= INITSEARCHROWS)) { NSMutableArray * columns = [[NSMutableArray alloc] init]; for (int i = 0; i <7; i ++) { Значение NSString *; char * column = (char *) sqlite3_column_text (statement, i); if (column == nil) { value = [[NSString alloc] initWithUTF8String: ""]; } else { value = [[NSString alloc] initWithUTF8String: column]; } [columns addObject: значение]; [value release]; } [list addObject: columns]; [выпуск колонок]; } [sql closeDatabase]; [sql dealloc]; } – user273565
ОК. Большая часть этого выглядит нормально. У меня есть вопрос о том, кто владеет памятью из «sqlite3_column_text (statement, i)»; вызов. Аналогично, [[NSMutableArray alloc] init] действительно должен быть [[NSMutableArray alloc] initWithCapacity: 8]. NSMutableArray НЕ переопределил init, есть вероятность, что какой-то код не будет называться, который действительно должен быть. Кроме того, используйте методы удобства «arrayWithCapacity:», «stringWithUTF8String:». Они удаляют много выпусков из вашего кода и облегчают вашу жизнь. –