Я думаю, что вы не должны возвращать ноль на втором выделении, а выдавать исключение. Если вы хотите использовать синглтон, вы не должны пытаться создать два:).
Однако, если я решу создать синглтон, мой класс будет выглядеть так:
@implementation MySingleton
static id _instance = nil;
+ instance
{
if (_instance == nil) {
// alloc/init
_instance = [[self alloc] init];
…
}
return _instance;
}
…
@end
Как видите, я не навязываю, чтобы никогда не было более одного экземпляра. Вместо этого я использую соглашение, чтобы получить экземпляр только с методом экземпляра.