Lesson of the day

When writing Objective C code, never forget to have your init method return self or bad things will happen, but maybe not in a debug build. I wasted over an hour on that today when my debug build worked perfectly but a release build crashed in awakeFromNib where it was initializing a series of items for a TabView. One of them had an init method that looked like this:

- (id)init
{
	if (self = [super init]) {
		[self loadStateNames];
	}
	// oops - I forgot something here
}


For some mysterious reason it didn’t fail in a debug build, and I couldn’t place a breakpoint to debug a release build, so I had to resort to “ghetto debugging” using CFShow. Instead of a panel object, I was seeing an array of state names! Adding return self; cured it.

Leave a Reply