2012-08-04 9 views
5

Po uaktualnieniu moją maszynę programowania do MountainLion i XCode do nowej wersji dostaję tego ostrzeżenia drukowane na każdym razem konsoli uruchomić mój wniosek:„nie ma sensu, aby narysować obraz” - ostrzeżenie po uaktualnieniu do MountainLion

Nie ma sensu rysowanie obrazu, gdy [NSGraphicsContext currentContext] jest zerowe. To błąd programowania. Przerwij void _NSWarnForDrawingImageWithNoCurrentContext() do debugowania. Zostanie to zarejestrowane tylko raz. Może to przerwać w przyszłości.

Nie używam obrazu w dowolnym miejscu w mojej aplikacji i przeszukałem cały projekt, ale nie mogłem go znaleźć. Czy ktoś wie, co może spowodować?

Używam 2 plików nib btw: One Popover i Mainwindow. Żadne z nich nie zawiera obrazu.

Edit: znalazłem linię gdy pojawia się:

[self.popover showRelativeToRect:[appDelegate.menulet frame] 
           ofView:appDelegate.menulet 
         preferredEdge:NSMinYEdge]; 

Ale żaden z tych obiektów jest zerowa. Jakieś sugestie?

Edycja 2: Menulet to podklasa NSView btw. Więc przekazuję widok.

+0

Czy ustawiłeś punkt przerwania w miejscu, w którym się mówi? Opublikuj śledzenie stosu po trafieniu punktu przerwania. –

+0

Jak mogę to stwierdzić? Nie pokazuje mi żółtego znaku ostrzegawczego, właśnie dostaję tę wiadomość. Jest data i moja nazwa aplikacji, po której następuje "[6686: 303]". Sprawdziłem każdą klasę w linii 303, ale nie mogłem nic znaleźć. –

+2

Przeczytaj [Informacje o nawigatorze punktu przerwania] (http://developer.apple.com/library/mac/#recipes/xcode_help-breakpoint_navigator/articles/about_breakpoint_navigator.html#//apple_ref/doc/uid/TP40010433-CH6-SW1) i [Dodawanie symbolicznego punktu przerwania] (http://developer.apple.com/library/mac/#recipes/xcode_help-breakpoint_navigator/articles/adding_a_symbolic_breakpoint.html).Wstaw pole '_NSWarnForDrawingImageWithNoCurrentContext' w polu Symbol i pozostaw pole Module puste. –

Odpowiedz

0

W moim przypadku ostrzeżenie spowodowało przepisanie mojego menuIcon za pomocą prostokąta (Praca nad aplikacją menuBar). Jeszcze nie rozwiązałem problemu, ale wiem, skąd to się wzięło w moim przypadku. Jeśli masz aplikację menubar, sprawdź kod, który generuje twoją ikonę.

1

Próbowałem ustawić punkt przerwania, ale jest on wywoływany, gdy ładuje się końcówka. Jest to bardzo niespecyficzne. Zrobiłem kopię stalówki, a następnie usunąłem z niej obiekty jeden po drugim, aż ostrzeżenie zniknęło. W moim przypadku był to NSOutlineView. Ale jak tylko dodałem nowy NSOutlineView, błąd powrócił.

W końcu mogłem usunąć ostrzeżenie, ręcznie przebudowując cały NIB. Żmudne, ale pozbyłem się ostrzeżenia.

+0

Dzięki Spróbuję tego później! –

+0

Naprawiono odtworzenie pliku NIB. –

1

Jeśli masz NSImageView, który został zainicjowany w stalówce, ale bez zestawu obrazów (i narysujesz obraz samodzielnie w kodzie), po prostu ustaw go i ostrzeżenie zniknie.

+1

Nie mam NSImageView. Właśnie to mnie interesuje ... –

+1

Ale miałem NSImageView, który został zainicjowany w stalówce, ale bez zestawu obrazów. Usunięcie go spowodowało usunięcie błędu. Wielkie dzięki. –

1

W moim przypadku jest tak, ponieważ rozmiar obrazu wynosi {0,0}, co "nie ma sensu". W rzeczywistości obraz jest dla NSButton, zmieniam obraz przycisku programowo. W jednym przypadku przycisk powinien być pusty, więc ustawiam pusty obraz z [NSImage new]. Ale pojawia się błąd, więc niezależnie od tego, jak zmieniam obraz przycisku, przycisk jest zawsze pusty. Po ustawieniu rozmiaru pustego obrazu problem zostaje rozwiązany i mogę z powodzeniem zmienić obraz przycisku.

Powiązane problemy