readFromData: ofType: error: вызывается перед загрузкой пера, поэтому я не могу использовать свои IBOutlets D: - PullRequest
0 голосов
/ 30 октября 2010

У меня есть приложение, которое использует NSDocument для открытия файлов. У меня есть NSView в моем NIB, и я хотел бы установить его размер в соответствии с открытым изображением:

- (BOOL)readFromData:(NSData *)data ofType:(NSString *)typeName error:(NSError **)outError {
  NSLog("FOO");
  // Load image
  // ...

  // Change size
  [mainView setFrameSize:NSMakeRect(image.size.width, image.size.height)];
  [mainView display]; // Redraw

  [image release];
  return YES;
}

Однако я сделал небольшую проверку foobar: «FOO» зарегистрировано в readFromData:ofType:error: и «BAR» зарегистрировано в методе представления initWithFrame:, но вывод в консоли:

2010-10-30 16:20:45.670 Pwnshop[513:a0f] Foo
2010-10-30 16:20:45.680 Pwnshop[513:a0f] Bar

Это означает, что я отправляю сообщение setFrameSize: непосвященному NSView.

Как я могу заставить NSDocument сначала загрузить перо, и , затем сделать readFromData:ofType:error:, или лучше изменить размер вида после , когда кончик загружен?

Спасибо.

1 Ответ

2 голосов
/ 30 октября 2010

Как я могу заставить NSDocument сначала загрузить перо, а затем сделать readFromData:ofType:error:,…

Вы не можете.

Редактировать с 2011 года:Но если вам может потребоваться Snow Leopard или более поздняя версия, вы можете переопределить метод canConcurrentlyReadDocumentsOfType: класса для возврата YES, и в этом случае вы получите сообщение readFromData:ofType:error: в фоновом потоке.Прочитайте соответствующую документацию для соответствующих требований и предостережений.

… или лучше изменить размер вида после загрузки пера?

Реализация windowControllerDidLoadNib: и создание окна/ посмотреть изменения там.Не забывайте вызывать до super, о чем свидетельствует реализация, предоставляемая шаблоном NSDocument-subclass.

...