Coredata и NSTableview - задержка фокуса при открытии модального окна после обновления системы Mac OSX - PullRequest
0 голосов
/ 08 ноября 2018

У меня есть приложение Mac OSX, созданное с помощью xcode 5, которое работает на Mac OSX 10.8. Мое приложение имеет много окон с табличным представлением, и все данные управляются средами coredata через несколько контроллеров NSArray. Приложение работает правильно. Я обновил свою систему до mac osx 10.13 и xcode до версии 9. Когда я открыл свой проект в Xcode 9, программа предложила мне несколько предложенных обновлений и множество устаревших методов. Я исправил все это, и теперь приложение работает и на моей новой системе OSX, хотя у меня есть небольшая проблема. В главном окне есть табличное представление с около 1000 строк. Двойной щелчок по строке открывает новое модальное окно со всеми подробностями выбранного элемента. Модальное окно появляется сразу, но для получения фокуса требуется слишком много времени. Если я закрою это модальное окно, главное окно также займет время, чтобы сфокусироваться. Это время задержки зависит от количества видимых строк в главном табличном представлении.

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

UPDATE: Приложение работает без изменений, но с той же проблемой задержки. В модальном окне есть несколько полей NSText, связанных с другим NSArraycontroller, который выбирает данные из Coredata. Это код для открытия и закрытия модального окна:

- (IBAction)openModalWindow:(id)sender {

NSArray *result=[arrayControllerSpeaker selectedObjects];
if ([result count]==1) {
    [self disattivaMenu];
    [scrollViewModalWindow setDocumentView:viewSpeaker];
    [self scrollToTop:scrollViewModalWindow];
    [undoManager removeAllActions];
    [[self managedObjectContext]setUndoManager:undoManager];
    [mainWindow beginSheet:modalWindow completionHandler:nil];
} }

- (IBAction)closeModalWindow:(id)sender {

[self saveAction:self];
NSArray *result=[arrayControllerSpeaker selectedObjects];
if ([result count]==1) {
    Speaker *speakerSelezionato=[result objectAtIndex:0];
    //I made a lot of stuff….
    //…..
    //…..
    [tableViewGrigliaOspiti reloadData];

}
[[self managedObjectContext] processPendingChanges];
[undoManager removeAllActions];
[[self managedObjectContext]setUndoManager:nil];
[sheetInfoMail orderOut:self];
[NSApp endSheet:modalWindow];
[modalWindow orderOut:self];
[self attivaMenu];}

Есть ли какие-нибудь хитрости в инструментах для выявления проблемы? Я не знаю, как его использовать.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...