2013-09-28 3 views
8

Я уже два дня борюсь со странной проблемой. Я рассмотрел каждый связанный с этим вопрос, но никто не решил проблему. Я работаю над Xcode5. Я использую ARC и CoreData.[CFString release]: сообщение отправлено на освобожденный экземпляр

На iOS7 (тренажер):

`[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 

Точка Zombies инструменты на вторую линию, где я поставил ячейки текстовых меток:

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

_reservationModule является объектом основных данных с изображением строковых свойств , Он определяется в контроллере представления, как @property (nonatomic, strong) ReservationModule *reservationModule;

История Зомби:

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] 

Они никогда не происходило на Xcode 4.6.x, хотя. Любая помощь очень ценится!

Спасибо!

+0

Это помогло мне в АРК: http://stackoverflow.com/a/10596942/3411787 –

ответ

27

Ответ тривиален и не имеет ничего общего с сохраняющими счетчиками ...

Я наблюдал, что он не имеет право называть переменные/свойство, начиная с new с АРК включено. Это, очевидно, привело к отпускайте, таким образом, генерируя ошибку ...

яблочная документации: https://developer.apple.com/library/ios/releasenotes/objectivec/rn-transitioningtoarc/introduction/introduction.html

Чтобы разрешить интероперабельности с кодом ручной сохранить релиз, ARC накладывает ограничение на метод именования:

Вы не можете указать аксессуар имя, которое начинается с нового. Это, в свою очередь означает, что вы не можете, например, объявить свойство, имя которого начинается с новой, если не указано другое поглотитель

+0

Свойства да; это не относится к локальным * переменным *. –

+2

и все еще может произойти с быстрым кодом :(Просто использовал этот ответ, чтобы помочь устранить проблему с помощью атрибута CoreData, называемого «new_notifications_count» – christophercotton

+1

OMG СПАСИБО ВАМ ТАК БОЛЬШЕ !!!! Святое дерьмо, какая странная проблема ... –

Смежные вопросы