2009-10-24 19 views
1

Меня беспокоит следующий фрагмент кода в моей программе.alloc-init иногда терпит неудачу в программе

Если я пишу

mo=[[myObj alloc] init]; 

это не удается, но если я пишу

mo=[myObj alloc]; 
mo=[mo init]; 

это работает. Эти два метода должны быть эквивалентными, но как-то я запутался. Любой свет?

Разъяснение:

myObj этого имя класса

Он терпит неудачу, пытаясь выделить для различного рода объектов, в противном случае найти правильные методы и, наконец, crapping из далеко от инициализации.

+3

Является ли myObj названием класса? Общей ошибкой нубийства является указание имени экземпляра в alloc. Является ли это обычным классом или вы видите ту же проблему с классами Foundation. Какая ошибка возвращается? – TechZen

+3

Каким образом это не удается? то есть, что происходит в вашей программе по-разному между первым и вторым? –

+0

Согласовано. Вам нужно дать больше информации о том, как это происходит. –

ответ

3

Я думаю, что это может произойти только в том случае, если метод -(id)init является неправильным в классе myObj. Возможно, вы не используете return self; или у вас нет возвращаемого типа (id). Если ни одно из этих правил не является правильным, предоставьте более подробную информацию о том, как реализован метод -(id)init.

+0

+1 от меня. Это звучит как хорошая догадка о том, почему он потерпит неудачу только в одном случае. Хорошая мысль! –