class DarkRaha extends com { // разработка приложений
            String a="Главная" b="Контакты" c="О сайте"
};

основы

введение
строки
массивы
ассоциативные массивы
значения null и nil

ООП

создание класса
конструктор/деструктор
методы
инкапсуля́ция
свойства
протокол
категории
селектор

разное

исключения
управление памятью

Справочник по Objective-c

Создание и уничтожение объекта

Создание и уничтожение основано на методах и протоколах корневого класса NSObject:

Таким образом, следующий шаблон кода является типичным


MyClass *myClass = [[MyClass alloc] init]; // создаем/инициализируем объект 
... 
[myClass release]; // освобождаем ссылку на объект

Также есть устаревшее сообщение new являющееся, краткой записью [[MyClass alloc] init].


MyClass *myClass = [MyClass new]; 

инициализация

Для инициализации собственных классов нужно переопределить метод init. Если инициализация по каким-либо причинам не проходит нужно освободить выделенную под объект память и возвратить nil. В некоторых случаях полезно уничтожить созданный объект и вернуть другой на замену.

Каждый класс должен гарантировать, что init метод возвращает либо полностью функциональный объект либо вызывать исключение


- (id)init {
    self = [super init]; // инициализируем родительский класс

    // если все ок
    if (self) {
        /* проводим инициализацию этого класса */    
    }

    return self;
}

Альтернативные методы инициализации рекомендуется называть init...


- (id)initWithTag:(int)tag;
- (id)initWithTag:(int)tag data:(struct info *)data;


- (id)init
{
    return [self initWithTag:-1];
}

- (id)initWithTag:(int)tag
{
    return [self initWithTag:tag data:NULL];
}

- (id)initWithTag:(int)tag data:(struct info *)data
{
    self = [super init...];
    if (self) {
            ...
    }
    return self;
}

уничтожение объекта

Освобождение ресурсов выносят в метод dealloc


-(void)dealloc {
  array = NULL;
  [arrayData release];
  [super dealloc];
}

Если используется самоуничтожение, то нужно перегрузить метод finalize.


- (void)finalize {
    if (log_file != NULL) {
        fclose(log_file);
        log_file = NULL;
    }
    [super finalize];
}

Не рекомендуется определять оба метода. Либо используйте связку malloc/dealloc, либо NSAllocateCollectable/finalize.

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


Рейтинг@Mail.ru