2013-09-28 15 views
8

Od dwóch dni borykam się z dziwnym problemem. Przejrzałem każde powiązane pytanie na SO, ale żadna nie rozwiązała problemu. Pracuję nad Xcode5. Używam ARC i CoreData.[Zwolnienie CFString]: wiadomość wysłana do zdeklarowanej instancji

Na iOS7 (symulator):

`[CFString release]: message sent to deallocated instance` 

Thread 1, Queue : com.apple.main-thread 
0 0x03c7d3ba in __kill() 
1 0x03c7c4b8 in kill$UNIX2003() 
2 0x0347a921 in ___forwarding___() 
3 0x0347a4ee in _CF_forwarding_prep_0() 
4 0x02b7b002 in -[NSConcreteAttributedString dealloc]() 
5 0x02f66692 in objc_object::sidetable_release(bool)() 
6 0x02f65e81 in objc_release() 
7 0x02f66ce7 in (anonymous namespace)::AutoreleasePoolPage::pop(void*)() 
8 0x00739bc4 in CA::Transaction::observer_callback(__CFRunLoopObserver*, unsigned long, void*)() 
9 0x0345253e in __CFRUNLOOP_IS_CALLING_OUT_TO_AN_OBSERVER_CALLBACK_FUNCTION__() 
10 0x0345248f in __CFRunLoopDoObservers() 
11 0x034303b4 in __CFRunLoopRun() 
12 0x0342fb33 in CFRunLoopRunSpecific() 
13 0x0342f94b in CFRunLoopRunInMode() 
14 0x04bd19d7 in GSEventRunModal() 
15 0x04bd17fe in GSEventRun() 
16 0x0196794b in UIApplicationMain() 
17 0x0000262d in main 

Punktem Zombies Przyrządy do drugiej linii, gdzie ustawić komórki tekstowe etykiety:

cell.txtLabel.text = _reservationModule.newReservationText; 
cell.subtitleTxtLabel.text = _reservationModule.newReservationSubtitle; 

_reservationModule jest podmiotem Rdzeń danych wyposażony właściwości ciągów . Jest zdefiniowana w kontrolerze widoku jak @property (nonatomic, strong) ReservationModule *reservationModule;

Historia zombie:

Event Type ∆ RefCt RefCt Timestamp Responsible Library Responsible Caller 
Malloc/Retain/Release (4) 01:01.114.922 CoreData _prepareResultsFromResultSet 
0 Malloc +1 1 01:01.114.922 CoreData _prepareResultsFromResultSet 
1 Retain +1 2 01:01.116.184 CoreData -[_CDSnapshot mutableCopy] 
2 Release -1 1 01:01.318.588 MyApp  -[ReservationModuleChoice2ViewController configureSubtitleImageTableViewCell:atIndexPath:] 
3 Release -1 0 01:05.004.359 CoreData -[_CDSnapshot dealloc] 
4 Zombie  -1 01:07.441.465 CoreData -[_CDSnapshot dealloc] 

Oni nigdy nie wystąpił w Xcode 4.6.x chociaż. Każda pomoc jest wysoko ceniona!

Dzięki!

+0

To pomogło mi na łuku: http://stackoverflow.com/a/10596942/3411787 –

Odpowiedz

27

Odpowiedź jest banalna i nie nic wspólnego z zachowują liczników ...

I nadzorował że nie wolno zmiennych Nazwa/właściwości zaczynając new z ARC włączona. To oczywiście spowodowało uwolnienie ponad generując błąd ...

Z dokumentacji Apple: https://developer.apple.com/library/ios/releasenotes/objectivec/rn-transitioningtoarc/introduction/introduction.html

aby umożliwić współdziałanie z kodem obsługi zachować uwalnianiu, ARC nakłada ograniczenia na metoda nazewnictwa:

Nie można nadać użytkownikowi nazwy rozpoczynającej się od nowej. To z kolei oznacza, że ​​ nie można, na przykład, zadeklarować właściwość, którego nazwa zaczyna się od nowa chyba określić inny getter

+0

Właściwości tak; nie dotyczy to lokalnych * zmiennych *. –

+2

i nadal może się zdarzyć w szybkim kodzie :(Po prostu użyłem tej odpowiedzi, aby pomóc wyśledzić problem z atrybutem CoreData o nazwie "new_notifications_count" – christophercotton

+1

OMG DZIĘKUJEMY TAK DUŻO !!!! Holy crap, co za dziwny problem ... –

Powiązane problemy