Главная » iPhone, Objective-C, Программирование для iOS и MacOS » init Objective-C

0

Класс NSObject содержит метод с именем init. После выделения памяти новому экземпляру отправляется сообщение init, чтобы экземпляр мог инициализировать сбой переменные экземпляров реальными значениями. Таким образом, alloc выделяет память для объекта, а init готовит объект к работе. Использование init выглядит примерно так:

NSMutableArray *things = [[NSMutableArray alloc] init];

Следует учитывать, что init является методом экземпляра, который возвращает адрес инициализированного объекта. Он обеспечивает инициализацию NSObject. В этой главе вы узнаете, как пишутся инициализаторы.

Написание методов init

Создайте новый проект: программу командной строки Foundation с именем Appliances. В этой программе мы создадим два класса: Appliance и ОwnedAppliance (субкласс Appliance). Класс Appliance (устройство) содержит переменные productName (название продукта) и voltage (напряжение). Экземпляр OwnedAppliance также будет содержать множество с именами владельцев.

Создайте  новый  файл:  субкласс  NSObject с  именем  Appliance.  В  файле

Appliance.h создайте переменные экземпляров и объявления свойств для ргоductName и

voltage:

#import <Foundation/Foundation.h>

@interface Appliance : NSObject { NSString *productName;

int voltage;

}

@property (copy) NSString *productName;

@property int voltage;

@end

(Атрибут свойств copy будет рассмотрен в главе 30.)

В файле Appliance.m синтезируйте методы доступа к переменным экземпляров:

#import "Appliance.h"

@implementation Appliance

@synthesize productName, voltage;

Рис. 29.1. Класс Appliance и его субкласс OwnedAppliance

Экземпляры Appliance создаются следующим образом:

Appliance *a = [[Appliance alloc] init];

Так как Appliance не реализует метод init, будет выполнен метод init, определенный в NSObject. Когда это произойдет, все переменные экземпляров, специфические для Appliance, будут обнулены. Соответственно переменная productName нового экземпляра Appliance будет равна nil, а переменная voltage будет равна нулю.

Источник: Аарон Хилегас, «Objective-C. Программирование для iOS и MacOS», 2012 г.

По теме:

  • Комментарии