NSImage Crop Crashing - PullRequest
       19

NSImage Crop Crashing

3 голосов
/ 13 февраля 2010

Когда я пытаюсь обрезать изображение с помощью NSImage imageFromRect, я получаю сбой EXEC_BAD_ACCESS в 50% случаев. Это то, что запускается при запуске (запускается в awakeFromNib), поэтому среда не должна меняться. Я не уверен, почему происходит сбой одного запуска, а не другого. Когда перед обрезкой изображения установлена ​​точка останова, я вижу, что изображение было загружено из файла правильно и, кажется, имеет правильные размеры. Любой совет?

Вот трассировка стека:

#0  0x97bb58c2 in ripc_RemoveEntry
#1  0x97b927b0 in ripc_AcquireImage
#2  0x97b903be in ripc_DrawImage
#3  0x930f9384 in CGContextDrawImage
#4  0x9463159f in __-[NSBitmapImageRep draw]_block_invoke_1
#5  0x9448e74b in __-[NSBitmapImageRep _performBlockUsingBackingCGImage:]_block_invoke_1
#6  0x94365232 in -[NSBitmapImageRep _performBlockUsingBacking:]
#7  0x9448e6b3 in -[NSBitmapImageRep _performBlockUsingBackingCGImage:]
#8  0x9462f87f in -[NSBitmapImageRep draw]
#9  0xb0006a03 in -[NSImage(Crop) imageFromRect:] at ThemeManager.m:325
#10 0xb000820a in -[FrameImages setImage:] at ThemeManager.m:270
#11 0xb0005f21 in -[ThemeManager setImage:forTheme:] at ThemeManager.m:63
#12 0xb0006397 in +[ThemeManager defaultThemeManager] at ThemeManager.m:39
#13 0xb0005b33 in -[SCThemedView layoutContentView] at SCThemedView.m:92
#14 0x9435ebaf in -[NSNibOutletConnector establishConnection]
#15 0x9435d33b in -[NSIBObjectData nibInstantiateWithOwner:topLevelObjects:]
#16 0x9435b450 in loadNib
#17 0x9435a848 in +[NSBundle(NSNibLoading) _loadNibFile:nameTable:withZone:ownerBundle:]
#18 0x9435a759 in +[NSBundle(NSNibLoading) loadNibFile:externalNameTable:withZone:]
#19 0x9435a6a4 in +[NSBundle(NSNibLoading) loadNibNamed:owner:]
#20 0x943574a9 in NSApplicationMain
#21 0x0000256a in start

Ответы [ 2 ]

0 голосов
/ 13 февраля 2010

В трассировке стека нет awakeFromNib; Вместо этого, похоже, что происходит сбой, когда загрузчик пера все еще находится в процессе создания соединений ([NSNibOutletConnector establishConnection]), что означает, что среда рисования может быть еще не настроена должным образом.

Попробуйте переместить установочный код ThemeManager (независимо от того, что вызывает [ThemeManager defaultThemeManager]) из метода SCThemedView layoutContentView в awakeFromNib.

SCThemedView.

Если это не сработает, попробуйте отложить все макеты или чертежи ThemeManager до тех пор, пока не будет вызван метод applicationDidFinishLaunching: NSApplication.

0 голосов
/ 13 февраля 2010

Покажите нам, как вы загружаете изображение. Этот сбой обычно является результатом освобождения объекта до того, как с ним покончено.

...