Сбой после увольненияModalViewControllerAnimated на iPad - PullRequest
0 голосов
/ 28 ноября 2011

Я столкнулся с неожиданной проблемой с моим приложением для iPad, и я не уверен, что делаю что-то не так или это нормальное поведение устройства -

  1. TableViewController -> didSelectRowAtIndexPath -> presentModalViewController
  2. Отмена / сохранение операции на modalView -> dismissModalViewControllerAnimated -> работает нормально.

Однако -

  1. TableViewController -> didSelectRowAtIndexPath -> presentModalViewController
  2. Изменение ориентации устройства на 90 градусов (означает, что ориентация текущего вида отличается от ориентации контроллера родительского вида
  3. Отмена операции при modalView -> dismissModalViewControllerAnimated -> CRASH

Я пытался изменить модальное представление при необходимости, используя setTranform - оно меняет представление, но не меняет значение self.interfaceOrientation.

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


Заключен вывод отладки - может быть, это может помочь ...

2011-11-29 11:09:35.981 myApp [65933:c203] -[UIDeviceWhiteColor count]: unrecognized selector sent to instance 0x7191bf0

2011-11-29 11:09:35.985 myApp [65933:c203] *** Terminating app due to uncaught exception 'NSInvalidArgumentException', reason: '-[UIDeviceWhiteColor count]: unrecognized selector sent to instance 0x7191bf0'

*** Call stack at first throw:
(
    0   CoreFoundation                      0x011dc5a9 __exceptionPreprocess + 185    
    1   libobjc.A.dylib                     0x015f7313 objc_exception_throw + 44   
    2   CoreFoundation                      0x011de0bb -[NSObject(NSObject) doesNotRecognizeSelector:] + 187
    3   CoreFoundation                      0x0114d966 ___forwarding___ + 966
    4   CoreFoundation                      0x0114d522 _CF_forwarding_prep_0 + 50
    5   myApp                               0x0000eac4 -[myTableViewController tableView:numberOfRowsInSection:] + 68
    6   UIKit                               0x005eb2b7 -[UISectionRowData refreshWithSection:tableView:tableViewRowData:] + 1834
    7   UIKit                               0x005ed8a4 -[UITableViewRowData rectForFooterInSection:] + 108
    8   UIKit                               0x005ed130 -[UITableViewRowData heightForTable] + 60
    9   UIKit                               0x004ada56 -[UITableView(_UITableViewPrivate) _updateContentSize] + 333
    10  UIKit                               0x004a50c0 -[UITableView _rectChangedWithNewSize:oldSize:] + 559
    11  UIKit                               0x004a3917 -[UITableView setFrame:] + 266
    12  UIKit                               0x00463a03 -[UIView(Geometry) resizeWithOldSuperviewSize:] + 385
    13  UIKit                               0x0046797b -[UIView(Geometry) resizeSubviewsWithOldSize:] + 273
    14  UIKit                               0x00463e94 -[UIView(Geometry) setFrame:] + 497
    15  UIKit                               0x004de475 -[UIViewControllerWrapperView setFrame:] + 79
    16  UIKit                               0x00463a03 -[UIView(Geometry) resizeWithOldSuperviewSize:] + 385
    17  UIKit                               0x0046797b -[UIView(Geometry) resizeSubviewsWithOldSize:] + 273
    18  UIKit                               0x00463e94 -[UIView(Geometry) setFrame:] + 497
    19  UIKit                               0x00463a03 -[UIView(Geometry) resizeWithOldSuperviewSize:] + 385
    20  UIKit                               0x0046797b -[UIView(Geometry) resizeSubviewsWithOldSize:] + 273
    21  UIKit                               0x004641c5 -[UIView(Geometry) setBounds:] + 623
    22  UIKit                               0x00601f51 -[UILayoutContainerView setBounds:] + 78
    23  UIKit                               0x004df4f7 -[UIViewController window:willAnimateRotationToInterfaceOrientation:duration:] + 440
    24  UIKit                               0x0045655f -[UIWindow _setRotatableClient:toOrientation:updateStatusBar:duration:force:] + 4347
    25  UIKit                               0x006dd619 -[UIWindowController transition:fromViewController:toViewController:target:didEndSelector:] + 1381
    26  UIKit                               0x004e3385 -[UIViewController _dismissModalViewControllerWithTransition:from:] + 2058
    27  UIKit                               0x004dfeb8 -[UIViewController dismissModalViewControllerWithTransition:] + 940
    28  myApp                               0x00014a04 -[myModalViewController cancelAdding:] + 132
    29  UIKit                               0x0042e4fd -[UIApplication sendAction:to:from:forEvent:] + 119
    30  UIKit                               0x004be799 -[UIControl sendAction:to:forEvent:] + 67
    31  UIKit                               0x004c0c2b -[UIControl(Internal) _sendActionsForEvents:withEvent:] + 527
    32  UIKit                               0x004bf7d8 -[UIControl touchesEnded:withEvent:] + 458
    33  UIKit                               0x00452ded -[UIWindow _sendTouchesForEvent:] + 567
    34  UIKit                               0x00433c37 -[UIApplication sendEvent:] + 447
    35  UIKit                               0x00438f2e _UIApplicationHandleEvent + 7576
    36  GraphicsServices                    0x02ce2992 PurpleEventCallback + 1550
    37  CoreFoundation                      0x011bd944 __CFRUNLOOP_IS_CALLING_OUT_TO_A_SOURCE1_PERFORM_FUNCTION__ + 52
    38  CoreFoundation                      0x0111dcf7 __CFRunLoopDoSource1 + 215
    39  CoreFoundation                      0x0111af83 __CFRunLoopRun + 979
    40  CoreFoundation                      0x0111a840 CFRunLoopRunSpecific + 208
    41  CoreFoundation                      0x0111a761 CFRunLoopRunInMode + 97
    42  GraphicsServices                    0x02ce11c4 GSEventRunModal + 217
    43  GraphicsServices                    0x02ce1289 GSEventRun + 115
    44  UIKit                               0x0043cc93 UIApplicationMain + 1160
    45  myApp                               0x00001c5a main + 170
    46  myApp                               0x00001ba5 start + 53
)

прекратить, вызвав выбрасывание исключения.ge: авто;в настоящее время target-c

Мой tableView numberOfRowsInSection:

return [iphoneWordPlistUnsorted count];

, который объявлен в файле .h и размещен в методе viewWillAppear:

[super viewWillAppear:animated];
documentsDirectory = [NSSearchPathForDirectoriesInDomains(NSDocumentDirectory, NSUserDomainMask, YES) objectAtIndex:0];
if ([[UIDevice currentDevice] userInterfaceIdiom] == UIUserInterfaceIdiomPhone)
{
    path = [documentsDirectory stringByAppendingFormat:WORDS_PLIST_IPHONE];
    self.tableView.sectionHeaderHeight = 63;
    self.tableView.rowHeight = 80;
}
else
{
    path = [documentsDirectory stringByAppendingFormat:WORDS_PLIST_IPAD];
    self.tableView.sectionHeaderHeight = 94;
    self.tableView.rowHeight = 120;
}

iphoneWordPlistUnsorted = [[NSMutableArray alloc] initWithContentsOfFile:path];
iphoneWordsPlist = [iphoneWordPlistUnsorted sortedArrayUsingSelector:@selector(localizedCaseInsensitiveCompare:)];

[iphoneWordPlistUnsorted removeAllObjects];
int i;
for (i=0; i < [iphoneWordsPlist count]; i++) {
    [iphoneWordPlistUnsorted addObject:[iphoneWordsPlist objectAtIndex:i]];
}

[self.tableView reloadData];

Большое спасибо,

Дуди

1 Ответ

0 голосов
/ 29 ноября 2011

Ваш объект iphoneWordPlistUnsorted освобождается, а память перераспределяется как-то еще.Запуск с включенными зомби (либо в Xcode, либо в Instruments) поможет вам точно определить ошибку.

...