Проблемы с созданием маленького синего квадрата на окне - PullRequest
0 голосов
/ 20 февраля 2012

Это мой первый набег в мир образов Objective-c, и я сразу столкнулся с трудностями.У меня есть пользовательское NSWindow в TimeAdder.xib, которое управляется NSWindowController с именем TimeAdder.Все работает очень хорошо, и теперь я пытаюсь добавить свой маленький синий прямоугольник.

Я настроил NSImageView размером 16 на 16 в нужном месте окна.Затем я добавил следующий код в метод windowDidLoad.

NSSize size;
size.width = 16;
size.height = 16;
image1 = [[NSImage alloc] initWithSize:size];
NSRect   imageBounds = NSMakeRect (0, 0, size.width, size.height);
NSColor* fileSet1Color = [NSColor blueColor];

[image1 lockFocus];
[fileSet1Color set];
NSRectFill (imageBounds);
[image1 unlockFocus];
[pickImage1 setImage:image1];

pickImage1 - это имя NSImageView и является иваром в TimeAdder.image1 является иваром в TimeAdder и является NSImage.size, firstSet1Color, imageBounds являются локальными переменными и исчезают, когда метод завершен.Не был уверен, что это имело значение или нет.

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

1 Ответ

2 голосов
/ 20 февраля 2012
  1. Вы уверены, что pickImage1 на самом деле является NSImageView? Если вы не подключили его в наконечнике или сделали неправильно, это может быть ноль. Objective-C не вызывает исключение в этом случае, но вместо этого ничего не делает.

  2. Менее вероятно: убедитесь, что NSImage на самом деле содержит то, что, по вашему мнению, оно делает, выгрузив его в файл. Самый простой способ - [[image1 TIFFRepresentation] writeToFile:@"/tmp/image.tiff" atomically:YES], затем в окне терминала: open /tmp/image.tiff.

(Пожалуйста, не используйте -TIFFRepresentation в реальном коде, если вы можете помочь, но это хорошо для отладки и проверок работоспособности, подобных этой.)

...