Przeczytałem tyle wyników wyszukiwania, które mogłem znaleźć na temat tego przerażającego problemu, niestety, każdy wydaje się koncentrować na konkretnym wywołaniu funkcji.
Mój problem polega na tym, że otrzymuję ten sam błąd z wielu funkcji, które, jak sądzę, są wywoływane z funkcji, których używam.
Co gorsza, rzeczywisty kod znajduje się w niestandardowym frameworku prywatnym, który jest importowany w innym projekcie, a zatem debugowanie nie jest tak proste?
Czy ktoś może wskazać mi właściwy kierunek? Mam wrażenie, że nazywam niektóre metody niepoprawnie lub w złym kontekście, ale dane wyjściowe z xcode nie są w tym momencie bardzo pomocne.
: CGContextSetFillColorWithColor: nieprawidłowy kontekst 0x0. To poważny błąd. Ta aplikacja lub używana przez nią biblioteka korzysta z nieprawidłowego kontekstu i tym samym przyczynia się do ogólnego pogorszenia stabilności i niezawodności systemu. To powiadomienie jest uprzejme: napraw ten problem. W nadchodzącej aktualizacji stanie się to fatalnym błędem.
: CGContextSetStrokeColorWithColor: nieprawidłowy kontekst 0x0. To poważny błąd. Ta aplikacja lub używana przez nią biblioteka korzysta z nieprawidłowego kontekstu i tym samym przyczynia się do ogólnego pogorszenia stabilności i niezawodności systemu. To powiadomienie jest uprzejme: napraw ten problem. W nadchodzącej aktualizacji stanie się to fatalnym błędem.
CGContextSaveGState: nieprawidłowy kontekst 0x0. To poważny błąd. Ta aplikacja lub używana przez nią biblioteka korzysta z nieprawidłowego kontekstu i tym samym przyczynia się do ogólnego pogorszenia stabilności i niezawodności systemu. To powiadomienie jest uprzejme: napraw ten problem. W nadchodzącej aktualizacji stanie się to fatalnym błędem.
: CGContextSetFlatness: nieprawidłowy kontekst 0x0. To poważny błąd. Ta aplikacja lub używana przez nią biblioteka korzysta z nieprawidłowego kontekstu i tym samym przyczynia się do ogólnego pogorszenia stabilności i niezawodności systemu. To powiadomienie jest uprzejme: napraw ten problem. W nadchodzącej aktualizacji stanie się to fatalnym błędem.
: CGContextAddPath: nieprawidłowy kontekst 0x0. To poważny błąd. Ta aplikacja lub używana przez nią biblioteka korzysta z nieprawidłowego kontekstu i tym samym przyczynia się do ogólnego pogorszenia stabilności i niezawodności systemu. To powiadomienie jest uprzejme: napraw ten problem. W nadchodzącej aktualizacji stanie się to fatalnym błędem.
: CGContextDrawPath: nieprawidłowy kontekst 0x0. To poważny błąd. Ta aplikacja lub używana przez nią biblioteka korzysta z nieprawidłowego kontekstu i tym samym przyczynia się do ogólnego pogorszenia stabilności i niezawodności systemu. To powiadomienie jest uprzejme: napraw ten problem. W nadchodzącej aktualizacji stanie się to fatalnym błędem.
: CGContextRestoreGState: nieprawidłowy kontekst 0x0. To poważny błąd. Ta aplikacja lub używana przez nią biblioteka korzysta z nieprawidłowego kontekstu i tym samym przyczynia się do ogólnego pogorszenia stabilności i niezawodności systemu. To powiadomienie jest uprzejme: napraw ten problem. W nadchodzącej aktualizacji stanie się to fatalnym błędem.
: CGContextGetBlendMode: nieprawidłowy kontekst 0x0. To poważny błąd. Ta aplikacja lub używana przez nią biblioteka korzysta z nieprawidłowego kontekstu i tym samym przyczynia się do ogólnego pogorszenia stabilności i niezawodności systemu. To powiadomienie jest uprzejme: napraw ten problem. W nadchodzącej aktualizacji stanie się to fatalnym błędem.
Błędy te mogą wystąpić, gdy prezentowany jest widok niestandardowy lub jedna z jego odziedziczonych klas. W tym momencie odradzają się wiele razy, dopóki klawiatura nie zapewni żadnych danych wejściowych. Zdarzenia dotykowe są nadal rejestrowane, ale system zwalnia i ostatecznie może prowadzić do nieprzydzielonych błędów obiektu.
EDYCJA 1: Mam dostęp do importowanego frameworka, ale nie widzę nic dziwnego w klasach, które powodują problem.
EDYCJA 2: Właśnie otrzymałem wiadomość e-mail z informacją, że iOS 7.1 został wydany dla programistów. Jestem ciekawy, czy to zniknie, pogorszy się, czy da się rozwiązać.
Odpowiedzi:
Inni będą prosić o opublikowanie kodu w miejscu, w którym uzyskujesz dostęp do podstawowego kontekstu graficznego, ale wątpię, czy to jest problem. Te niepoprawne kontekstowe komunikaty o błędach 0x0 są powszechne i łatwe do odtworzenia w iOS 7. W rzeczywistości mogę odtworzyć błąd za pomocą scenorysu z zerowym kodem. Przeciągam UITextField na obszar roboczy w IB, uruchamiam aplikację i dwukrotnie stukam w pole tekstowe.
W wielu sytuacjach ciężko jest mi poważnie traktować nieprawidłowe komunikaty o błędach 0x0. Nie wiem, czy twoja sytuacja wymaga większego zaniepokojenia (zgadzam się z Robem Napierem, że warto to zbadać, zwłaszcza jeśli wyraźnie używasz kontekstu graficznego).
W moich własnych projektach mam nadzieję, że wiele z tych błędów magicznie zniknie pewnego dnia (ale ten dzień nie przyszedł z wersją 7.0.3).
Aktualizacja: po zainstalowaniu Xcode 5.1 i celowaniu w iOS 7.1 nie mogę już odtworzyć błędu przez dwukrotne dotknięcie pustego pola tekstowego.
źródło
Jeśli jesteś ciekaw, jaki kod jest przyczyną tych dzienników, można dodać symboliczną przerwania na
CGPostError
.źródło
Tego rodzaju błędy są historycznie wynikiem wywoływania funkcji Core Graphics, gdy nie znajdują się one w kontekście ustanowionym w ramach
drawRect
lub pomiędzy wywołaniami takimi jakUIGraphicsBeginImageContext
iUIGraphicsEndImageContext
(lub innymi funkcjami UIKit, które rozpoczynają i kończą kontekst).Powiedziawszy to jednak, bilobatum ma rację, że ta szczególna sekwencja błędów może być wynikiem tego błędu iOS 7, do którego odwołuje się w swojej odpowiedzi. Jeśli nie widzisz tych błędów w swoich celach iOS6 lub jeśli po szybkim skanowaniu tego prywatnego środowiska nie znajdziesz żadnych podejrzanych wywołań Core Graphics, może to być po prostu ten błąd iOS 7. Dobry połów, bilobatum!
źródło
upewnij się, że rozmiar. szerokość lub rozmiar. wysokość nie jest równa 0,
możesz dodać punkt przerwania symbolu do CGPostError, aby sprawdzić
źródło
Miałem ten problem z prostym polem UITextField (klawiatura nie wyświetla się i wiele różnych komunikatów o błędach kontekstowych na konsoli). Właśnie znalazłem obejście, szukając innego problemu na SO: Nie można znaleźć pliku wykonywalnego dla CFBundle CertUIFramework.axbundle
Po prostu zrób:
Problem nie powinien już istnieć
źródło
W moim przypadku mam następujące błędy w tym kodzie:
po kilku przemyśleniach i teście wykrywam problem - oto połączenie:
jak wykrywam - w moim kodzie to wywołanie nie jest konieczne, ponieważ wypełnienie zostanie wykonane w inny sposób - więc po prostu je usuwam.
źródło
Miałem ten sam problem i zapomniałem zaimportować QuartzCore / QuartzCore.h, To rozwiązało mój problem z tymi błędami.
źródło
Prosta odpowiedź: Problem polega na tym, że użyłeś podstawowych elementów graficznych, takich jak CGContext itp., W innej niż
- (void)drawRect:(CGRect)rect
ta metoda.Teraz uprzejmie przenieś swój kod do tej metody. I będzie strop dając ostrzeżenia / błędy.
źródło
Otrzymałem ten błąd, ponieważ użyłem obiektu UIColor jako atrybutu w słowniku NSAttributString, który był używany w obiekcie CATextLayer. Zmieniłem słownik na CGColorRef i błąd zniknął.
źródło
Miałem przypadki, w których kontekst wróciłem z
UIGraphicsGetCurrentContext()
toNULL
, a jeśli spróbujesz go używać do niczego to pojawia się komunikat. Widok odpowiada za użycie kontekstuUIGraphicsPushContext
przed wywołaniemdrawRect:
, jeśli zadzwoniszdrawRect:
bezpośrednio zamiast[view setNeedsDisplay]
ryzykować, że kontekst nie zostanie jeszcze ustawiony. Mam przeczucie, że przed iOS 7 kontekst był wypychany do widokuinit
, a teraz w iOS 7 kontekst nie jest wypychany aż do pierwszegodrawRect:
wywołania. Podejrzewam, że jakiś kod UIKit wywołujedrawRect:
bezpośrednio i dlatego występują problemy z niektórymi kodami, nawet jeśli nie jest wykonywany rysunek niestandardowy.Rozwiązania (w przypadku rysowania niestandardowego):
drawRect:
bezpośrednio, używaj[view setNeedsDisplay]
lub jeśli potrzebujesz natychmiastowego użycia rysunku[view.layer draw]
drawRect:
kontekście, ale nie używaj go poza treścią instrukcji ifif (context) {<do drawing here>}
źródło
Wyłączenie automatycznego układania w dotkniętym widoku powoduje, że ten błąd znika w niektórych przypadkach, w których umieszczasz i przenosisz elementy interfejsu użytkownika (zwłaszcza te niestandardowe, które są rysowane programowo) w widoku. Kiedy odkryłem ten objaw, użyłem JVFloatLabeledTextField.
źródło
W niektórych przypadkach może być konieczne dołączenie wiersza
#import <QuartzCore/QuartzCore.h>
.źródło
Ten błąd wystąpił w metodzie drawInContext (..) mojej niestandardowej implementacji CALayer. UIBezierPath próbuje użyć UIGraphicsGetCurrentContext (), która domyślnie jest zerowa w warstwie niestandardowej. Dokumentacja online wyjaśnia to bardzo wyraźnie -
Oto kod, który w końcu zadziałał z moimi komentarzami (kod Swift, ale rozwiązanie jest takie samo niezależnie)
źródło
W moim przypadku pojawiało się to ostrzeżenie podczas tworzenia obrazu resible z wypustkami nakładki. Problem polegał na tym, że nie zostawiałem co najmniej 1 piksela w obszarze „nieograniczonego”.
źródło
Tworzyłem UIImage z kontekstu, używając poniższego kodu:
W ten sposób otrzymywałem błąd.
Więc usunąłem dane pochodne, zrestartowałem mój XCode. I zadziałało.
źródło
Mam ten sam problem. W moim projekcie próbuję utworzyć pole tekstowe i dodać go do mojego pliku pdf. Stary kod:
Po rozwiązaniu tego problemu kod zmienił się:
Znalazłem rozwiązanie w UIColor SetFill nie działa . I dziękuję pomocnikowi.
źródło
Mam błąd z kodem
i po usunięciu kodu
Świat ucichł
źródło
Dla mnie odpowiedzią było, że niepotrzebnie zwalniałem kontekst graficzny w
drawRect:
. Rzucenie symbolicznego punktu przerwania na CGPostError wskazało mi winowajcę.źródło
Dostałem ten błąd, jak ustawiłem
Bez implementacji żadnej z procedur delegowania. Usunięcie tej linii rozwiązało problem dla mnie
źródło
Miałem ten problem w polu UITextField, kiedy dotknąłem pustego pola tylko tekstem zastępczym. Użyłem następujących obejść, aby wyeliminować puste pola:
źródło
Dla mnie pojawiał się ten błąd, ponieważ zwalniałem CGContextRef, jak pokazano poniżej:
Usunięcie wydania rozwiązało problem
źródło
Mam go, gdy pomyliłem nazwę obrazu w metodzie activityImage w podklasie UIActivity
Wpisanie odpowiedniego obrazu rozwiązało to dla mnie.
źródło
Odinstaluj aplikację z symulatora i uruchom ponownie
źródło
Podobnie jak inni, którzy tutaj skomentowali, otrzymałem to ostrzeżenie, gdy wykonałem jedną z następujących czynności:
W pustym polu tekstowym: Podwójne stuknięcie, dotknij i przytrzymaj, długie pojedyncze stuknięcie.
Wydaje się, że dotyczy to tylko iOS 7.0.3
Odkryłem obejście, ostrzeżenie nie zostanie uruchomione, jeśli twój karton nie ma wartości NULL.
Więc zrobiłem następujące w textFieldDidBeginEditing:
Przetestowałem to w symulatorze dla iOS 7.0.3 na iPhone'ach 4s, 5 i 5s i nie otrzymuję już ostrzeżenia. Przetestowałem to również w symulatorze dla systemu iOS 8 na iPhonie 6 i 6 plus, ale nie sądzę, aby miało to wpływ na iOS 8.
Przeszedłem przez dwa dni frustracji, zanim odkryłem tę pracę, więc mam nadzieję, że moja odpowiedź pomoże tym z was, którzy mają ten sam problem.
źródło
Jeśli błąd występuje podczas korzystania z UIBezierPath i ustawiania koloru dla obrysu lub wypełnienia, należy ustawić ustawiony kod koloru w funkcji drawRect zamiast w innych miejscach.
źródło
To jest hacky, ale zadziałało dla mnie.
I skonfigurować
UIImageView
wUITableViewCell
„sinit
, nadać jej rozmiar i ograniczeń.Następnie w moim kontrolerze widoku
cellForRowAtIndexPath
robię to:I to pozwala uniknąć błędu, a następnie poniżej tej funkcji ustawiam dla tego rzeczywisty obraz
UIImageView
. Powyższy kod jest dobrym ustawieniem domyślnymźródło