2013-04-18 2 views
1

Я хочу создать фабричный класс для создания объектов для меня (определенного класса).Factory class - stop init

В классе Factory будут только методы класса. Есть ли способ, с помощью которого я могу остановить alloc init от вызова класса?

+2

Что вы хотите достичь? Вы хотите убедиться, что это никогда не было вызвано? Если это так, перепишите alloc и init, не вызывайте суперкласса «alloc» и «init» и «return no». Но почему? «Пустой» класс не стоит много байтов памяти. –

+0

Хорошая точка, спасибо. – Fogmeister

ответ

1

Да, вы можете, определить инициализации у вас интерфейс, как

- (id) init __unavailable; 
1

Вы можете вернуть self в alloc и init. self в данном случае означает, что объект класса, поэтому вызов метода этого объекта вызовет вызова методов класса

+ (id)alloc { 
    return (id)self; 
} 

+ (id)init { 
    return self; 
} 
+0

'self' в 'init' должен нести объект, а не класс? То, что вы говорите, верно для 'alloc'. Поэтому в 'init'' [self class]' должно быть возвращено. –

+0

Если вы возвращаете объект класса в 'alloc'? В 'init' self будет объектом, что ваше возвращение в' alloc', я думаю – Ossir

+0

Ну, это будет работать во время выполнения. Во время компиляции это вызовет ряд предупреждений и при использовании ошибок ARC. Или требуется, чтобы все методы класса были объявлены (интерфейс должен выполнять) как метод класса, так и экземпляр. –

Смежные вопросы