НОВАЯ ИНФОРМАЦИЯ: Что-то, что я только что заметил (потому что это не то, что я обычно делал бы), но это многооконный приложение с палитрой инструментов и окном изображения ... проблема заключается в окне изображения - окно инструментов не имеет проблем с изменением размера, оно очень быстрое и плавное. Так что это просто другие окна в приложении; окно редактирования изображения, окно библиотеки изображений.
Что-то в моей структуре приложения может быть неправильным, но я не знаю что. Симптом заключается в том, что изменение размера моего окна не проходит гладко - вместо этого оно на мгновение зависает, а затем «дергается» на следующую позицию. Instruments говорит, что время тратится в mach_msg_trap. Окно ничего не делает - я закомментировал все, пытаясь сузить то, что может быть причиной этого, и теперь у меня даже не происходит рисования (хотя окно, конечно, отображает строку заголовка и границы и т. д.) Так что это пустое окно с нулевой работой просто медленно, как грязь.
Я гуглил как сумасшедший, я прочитал тонны документов по runloops, окнам и представлениям, и я не могу найти даже намека на то, что может вызвать это.
Я вижу эту проблему под 10.5.8, xcode 3.1.3, gcc 4.0 на 8-ядерном компьютере с 8 ГБ оперативной памяти, много свободного места и много свободного дискового пространства. Я вижу такое же поведение на двухъядерном MacBook Pro / 2 ГБ и на двухъядерном MacBook / 2 ГБ, все работают 10.5.8.
Когда весь код на месте, все в моем приложении работает, но скомпрометировано очень медленной скоростью обновления, которую я вижу. Загрузка процессора не очень высока, поэтому для отображения доступно гораздо больше времени, просто оно не используется.
После того, как весь мой код дисплея закомментирован (буквально ... сверху вниз, без рисования, без кода представления, поэтому приложение буквально не выполняет ничего ), отрывистость такая же, но загрузка ЦП почти ноль. Как будто это не вызывает окна достаточно часто. Но я не могу найти причину, по которой это не удалось бы сделать.
... и под "рывком" я подразумеваю, что когда я перетаскиваю маленький виджет изменения размера в правом нижнем углу окна на умеренной или даже медленной скорости, рамка остается на месте, а затем "щелкает" огромным расстояние до точки, куда попала мышь, затем повторяется.
Добавьте код обратно, и он действует так же. Так что это не код рисования. Мой инстинкт говорит, что это структурная проблема - что-то не так в IB, или в том, как я настроил представления, и т. Д. Но я не могу найти ничего, что я должен сделать как вопрос «это нужно сделать, чтобы сделать ответ изменения размера / перерисовки или мгновенного ответа runloop "в любом из документов или подсказок в Интернете.
В окне есть пользовательский вид, перетаскиваемый из палитры IB таких вещей. Он настроен на изменение размера автоматически с размером окна. И это так. Но он отлично следует за окном, то есть рывками. Drawrect или без Drawrect.
У каких-нибудь настоящих экспертов по какао есть идеи?