ios - In what cases will a 'release' call recur? -
i have segmentation fault (sigsegv
) following stack-trace:
thread 6 crashed: 0 libobjc.a.dylib objc_msgsend (in libobjc.a.dylib) + 16 1 coredata -[nsmanagedobject release] (in coredata) + 160 2 libobjc.a.dylib object_cxxdestructfromclass(objc_object*, objc_class*) (in libobjc.a.dylib) + 148 3 libobjc.a.dylib objc_destructinstance (in libobjc.a.dylib) + 92 4 coredata _pfdeallocateobject (in coredata) + 28 5 myapp -[job dealloc] (in myapp) (job.m:113) 6 coredata -[_pfmanagedobjectreferencequeue _queuefordealloc:] (in coredata) + 272 7 coredata -[nsmanagedobject release] (in coredata) + 160 8 coredata -[_pfarray dealloc] (in coredata) + 100 9 libobjc.a.dylib (anonymous namespace)::autoreleasepoolpage::pop(void*) (in libobjc.a.dylib) + 564
note dealloc
method in job
class empty/a no-op. appears vestigial remnant before code converted arc.
what strikes me strange in stack-trace there's call [nsmangedobject release]
leads subsequent call [nsmanagedobject release]
before completes. gives appearance of recursion, though guess second call other nsmanagedobject
instance , no actual recursion occurring.
but cases in occur? name of preceding method in chain (object_cxxdestructfromclass
), seems runtime deallocating class member-variables may exist. correct?
the job
class have ivar
field used keep transient reference nsmanagedobject
instance, crash occurring when runtime attempts release instance referenced ivar
(which, appear, has been released)?
Comments
Post a Comment