Nick
Nick

Reputation: 9860

How do I debug weird memory management issues in Xcode/Objective-C?

I'm newish to Objective-C and my memory management skills are not great. However, I haven't had a single problem until now. And now I've got big problems.

I've gone from zero crashes to crashing at random points, giving me either no console output or unrecognized selector errors on random types (-[NSCFSet isSameAsStop:]: unrecognized selector - I don't even use any sets and I surely have not called my custom isSameAsStop on any sets.). Judging by the randomness and errors, it seems like a memory thing to me although I'm not entirely sure.

How do I go about debugging this? The debugger assumes you know where your problem is... and mine is just everywhere. Ideas?

SOLUTION COMMENT

Some clarification on the solution suggestion to "run with zombie detection enabled":

Thanks for the help!

Upvotes: 1

Views: 1627

Answers (2)

indragie
indragie

Reputation: 18122

In Xcode: Build menu >> Build and Analyze

Finds a lot of common memory management issues.

Upvotes: 0

bbum
bbum

Reputation: 162722

You have a classic over-release bug on your hands. Somewhere, you are over-releasing an instance of the class that implements isSameAsStop and it just so happens that an NSSet instance is allocated at the same spot after the original instance is deallocated.

The first step is to "build and analyze" your code, fixing any problems that the static analyzer finds.

The next step is to then run with zombie detection enabled.

Upvotes: 6

Related Questions