The common idiom for self init (below) causes a double-call when compiling with --advanced, resulting in an incorrect retain count. if (!(self = [super init])) { return nil; }