/ / Dlaczego UIDatePicker bez funkcji, dodany do mojej aplikacji przez IB, powoduje awarię mojej aplikacji? - iPhone, iPad, Datepicker, Uidatepicker

Dlaczego UIDatePicker bez funkcji, dodane do mojej aplikacji przez IB, spowoduje awarię mojej aplikacji? - iphone, ipad, datepicker, uidatepicker

Właśnie dodałem UIDatePicker do mojej aplikacji na iPadaIB, połączyłem go z gniazdem w kodzie, zapisałem w IB, dodałem UIPickerViewDelegate do mojego UIViewController w kodzie, a także dodałem ujście UIDatePicker w kodzie. Kiedy buduję i uruchamiam, aplikacja uruchamia się, ale zawiesza się sporadycznie, gdy próbuję otworzyć widok popover zawierający datepicker. Mówię sporadycznie, ponieważ widok okna popover od czasu do czasu otwiera się pomyślnie, ale nigdy więcej niż raz (zawsze zawiesza się przy drugim otwarciu okna popover, jeśli nie zawiesza się za pierwszym razem). Ponadto w konsoli otrzymuję następujące informacje wiadomość

objc[594]: FREED(id): message lastClickRow sent to freed object=0x6015a70
  1. Dlaczego tak się dzieje i jak mogę to naprawić?
  2. Co oznacza ten komunikat konsoli?

Warto wspomnieć, że widok popover zawiera również widok tabeli wraz z kontrolką datepicker.

Z góry dziękuję za pomoc!

Odpowiedzi:

0 dla odpowiedzi № 1

Jest to prawie na pewno kwestia liczby referencji. Wydaje się dziwne, że twój kontroler widoku (który, jak zakładam, jest twoim delegatem) UIDatePicker, ponieważ tam właśnie wdrożyłeśprotokół) zostanie zwolniony podczas normalnych operacji, ale jest to pierwsza rzecz, na którą powinieneś zwrócić uwagę - że delegat jest ustawiony i pozostaje prawidłowym obiektem w czasie wyświetlania widoku wyskakującego.


1 dla odpowiedzi nr 2

Ja też ciężko mi się przez to przeszłoproblem, ale w końcu udało się go rozwiązać. Zamiast dodawać UIDatePicker w narzędziu do tworzenia interfejsów, dodaj go dynamicznie lub programowo. Z pewnością działało to dla mnie i mam nadzieję, że również dla ciebie. UIDatePicker * _datePicker = [[Alokacja UIDatePicker] initWithFrame: ramka]; [self.view addSubview: _datePicker];


0 dla odpowiedzi № 3

Jedną zabawną rzeczą, którą mogłeś zrobić, to wypuścićreferencja UIPopOverController po przekazaniu jej komunikatu [presentPopover ...], tak jak robimy to przy przekazywaniu komunikatu presentModalViewController do UIViewController. Też napotkałem ten problem, jedną rzeczą, którą możesz zrobić, jest coś takiego

self.funnyPopoverController = aPopoverController;

(oczywiście funnyPopoverController zachowuje tutaj właściwość type).

W przeciwnym razie trudno przewidzieć, co się stanie, nie wpatrując się w kod przez kilka długich godzin czasu :)