[CFString release]: message sent to deallocated instance

匿名 (未验证) 提交于 2019-12-03 02:24:01

问题:

I've been struggling with a strange problem for two days now. I went through every related question on SO but none solved the issue. I'm working on Xcode5. I'm using ARC and CoreData.

On iOS7 (simulator):

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

The Zombies Instruments point to the second line where I set the cell's text labels:

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

_reservationModule is a Core Data entity featuring the string properties. It's defined in the view controller as @property (nonatomic, strong) ReservationModule *reservationModule;

The Zombie history:

They've never occurred on Xcode 4.6.x though. Any help is highly appreciated!

Thanks!

回答1:

The answer is trivial and hasn't anything to do with retain counters...

I oversaw that it isn't allowed to name variables/properties starting with new with ARC enabled. This obviously resulted in an over release thus generating the error...

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

To allow interoperation with manual retain-release code, ARC imposes a constraint on method naming:

You cannot give an accessor a name that begins with new. This in turn means that you can’t, for example, declare a property whose name begins with new unless you specify a different getter



标签
易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!