Вам нужно иметь нулевое предупреждение от компилятора - вы не можете игнорировать их и «подделать».
Вы боретесь с основами, у вас есть опыт работы с другими языками программирования?
Есть несколько вещей, которые вы должны знать, чтобы кодировать в Objective-c, и вы должны быть знакомы с общими концепциями объектно-ориентированного программирования. Также немного C может быть полезным, так как target-c - это расширение C, и оно может дать некоторое представление о том, почему ориентация объекта так полезна и стоит усилий.
Если вы уже знаете такой язык, как Python, Java или даже Actionscript, тогда почти все концепции одинаковы, и цель-c действительно не так уж и сложна. Вам просто нужны подробности о том, как эти понятия перевести в цель-c. Например,
Как вы определяете класс? Как вы переопределяете существующий класс? Как выглядит метод инициализатора? Как вы создаете экземпляр класса? и т.д. Есть еще несколько вещей, кроме этого, но на самом деле не так много - вам нужно изучить их или, по крайней мере, иметь под рукой ссылки в начале, чтобы вы не ошиблись. Если вы не знаете, что они имеют в виду, вам нужно выучить это.
«Класс» подобен плану расположения фрагмента памяти, в случае NSNumber - фрагмент памяти, который, как мы надеемся, будет содержать число. Класс NSNumber знает, насколько большим должен быть объем памяти и как он должен быть расположен. Нас действительно мало заботит план, класс - нам нужен фактический кусок памяти, который может содержать число - экземпляр класса.
В target-c создание объекта, экземпляра данного класса всегда, всегда, всегда, всегда включает, во-первых, требование владения свободным портом памяти правильного размера, сохраняя адрес этого порция памяти переменной, затем предоставляя объекту возможность выполнить свою первоначальную настройку, вызывая предпочтительный метод настройки.
Чтобы претендовать на владение памятью, вы отправляете метод alloc в класс.
NSNumber *myNumberVariable = [NSNumber alloc];
Чтобы установить число с начальным значением 10.0, вы отправляете сообщение initWithDouble: вашему новому экземпляру.
[myNumberVariable initWithDouble:10.0];
Для удобства они могут быть и обычно объединены в одно утверждение.
NSNumber *myNumberVariable = [[NSNumber alloc] initWithDouble:10.0];
Это самый фундаментальный аспект программирования на языке c. Вы ничего не можете сделать без глубокого понимания этого. Поиск в Google init objective-c
возвращает буквально сотни учебников, руководств, шпаргалок и справки.
Если вашему собственному классу требуется свойство, инициализируемое при создании экземпляра, например, arrayOfTouches , вы должны переопределить предпочтительный метод настройки родительского класса. Если родительским классом является NSObject, предпочтительным методом настройки NSObject является init. Если вы создаете объект в своем методе установки, у вас всегда должен быть метод dealloc. Это всегда, всегда, всегда будет выглядеть так:
- (id)init {
self = [super init];
if(self){
}
return self;
}
- (void)dealloc {
[super dealloc];
}
Изменится только имя "init", в зависимости от имени переопределяемого метода, - (id) init становится - (id) nameOfMethodIAmOverriding и [super init] становится [super nameOfMethodIAmOverriding] ;
Учитывая этот стандартный шаблон для настройки и разрыва, вы можете добавить в настройку и разбор ваших собственных свойств. В вашем случае дает вам.
- (id)init {
self = [super init];
if(self){
arrayOfTouches = [[NSMutableArray alloc] init];
}
return self;
}
- (void)dealloc {
[arrayOfTouches release];
[super dealloc];
}
Слушайте, я не думаю, что у вас есть вопросы с тупыми головами, это разумные вопросы, но если у вас есть 3 книги - ответы почти наверняка есть на первых нескольких страницах каждой книги - возможно, вы собираетесь узнать это неправильно. Почему-то вы не получаете основ. Лучшее, что я могу предложить, - это идти медленнее и выполнять упражнения, описанные в книге, или выбрать более простой язык и попытаться освоить его перед переходом к цели-c.