Próbuję debugować problem działający pod iOS 5.1 i kiedy zatrzymuję się w debugerze wewnątrz kodu, który dostaje błąd i próbuję wydrukować coś za pomocą debuggera. wiadomość:"self" nie jest dostępny w debuggerze na iOS 5.1
error: warning: Stopped in a context claiming to capture an Objective-C object pointer, but 'self' isn't available; pretending we are in a generic context
Przepraszam? Czy ktoś wie, co tutaj zrobiłem?
Kod jest zbyt skomplikowany, aby ktokolwiek chciał go obejrzeć - mam nadzieję, że ktoś może mi powiedzieć, co oznacza komunikat debuggera.
Zdarzyło się to tylko z przerwami, ale teraz kończy się niepowodzeniem. Operacja na ogół (a może zawsze) działa po raz pierwszy, gdy wypróbowuję ją na iOS 5.1, czasami po raz pierwszy i najwyraźniej zawsze działa w iOS 6.
Jeśli pomaga poznać ogólny kontekst ... Próbuję dodać dobrze napisany obiekt do grupy ALAssetsGroup, więc jest to blok zakończenia w wątku innym niż UI. Mam rozsądny wygląd śledzenia stosu dla bloku ukończenia. Błąd polega na tym, że przechowywana grupa ALAssetsGroup nie ma już znaczącej wartości - lub tak twierdzi NSLog, która wie, że jest to obiekt ALAssetsGroup. Ta wartość jest przypisana w jednym miejscu (i rejestrowana, więc śledzę to) i widzę początkowe przypisanie za pomocą obserwacji klucz-wartość i nie widzę, aby kiedykolwiek było zmieniane w sposób KVO-sorta.
Nie jesteś w pliku Objective-C++? Widziałem wiele tego rodzaju błędów w tym szalonym języku (jeden z wielu powodów, dla których ograniczam jego użycie). Inną rzeczą, którą należy sprawdzić, jest to, że nie debugujesz kompilacji wydania (gdzie niektóre ramki stosów mogą być zoptymalizowane). Tylko przypuszczenia. –
Dzięki. Prosty Objective-C i konstrukcja debugowania, więc nie ma tam radości. –
to może się zdarzyć, jeśli 'self' zostanie zoptymalizowany przez kompilator.możesz spróbować wydrukować '$ edi', jeśli debugujesz na symulatorze –