Проверьте количество отсчетов по пути; это должно помочь вам увидеть, что происходит.
codeTextfield = [[UITextField alloc] initWithFrame:codeTextfieldFrame];
// RETAIN COUNT IS NOW 1
[[[CCDirector sharedDirector] openGLView] addSubview:codeTextfield];
// RETAIN COUNT IS NOW 2
[codeTextfield removeFromSuperview];
// RETAIN COUNT IS NOW 1
Чтобы вернуть счетчик к 0 после удаления codeTextfield
из представления, вместо этого сделайте следующее:
codeTextfield = [[UITextField alloc] initWithFrame:codeTextfieldFrame];
// RETAIN COUNT IS NOW 1
[[[CCDirector sharedDirector] openGLView] addSubview:codeTextfield];
// RETAIN COUNT IS NOW 2
[codeTextfield release];
// RETAIN COUNT IS NOW 1
[codeTextfield removeFromSuperview];
// RETAIN COUNT IS NOW 0 -- DEALLOC WILL BE CALLED