Главная » iPhone, Objective-C, Программирование для iOS и MacOS » Объекты в памяти Objective-C

0

На рис. 12.3 изображена диаграмма объектов. На ней изображены два экземпляра NSDate в куче. Две переменные now и later являются частью кадра функции main(). Они указывают на объекты NSDate (связи изображены стрелками).

Пока что мы видели только один класс: NSDate, но в iOS и Mac OS X входят сотни классов. С самыми распространенными из них мы познакомимся в следующих главах.

Рис 12.3. Диаграмма объектов приложения TimeAfterTime

id

При объявлении указателя на объект обычно указывается класс объекта, на который будет ссылаться этот указатель:

NSDate *expiration;

Но время от времени бывает нужно создать указатель, не зная точно, на какой объект он будет ссылаться. В таких случаях используется тип id, который означает

«указатель на какой-либо объект Objective-C». Пример использования id:

id delegate;

Обратите внимание на отсутствие звездочки (*) в этом объявлении — она подразумевается при наличии id.

На первых порах довольно трудно усвоить концепции классов, объектов, сообщений и методов. Не огорчайтесь, если вы немного неуверенно чувствуете себя при работе  с  объектами  —  ведь  это  только начало.  Мы  будем  использовать  эти конструкции снова и снова, и с каждым разом они будут выглядеть все более осмысленно.

Упражнение

Используйте два экземпляра NSDate для вычисления продолжительности вашей жизни в секундах. Подсказка: новый объект date по заданному году, месяцу и т. д. создается следующим образом:

NSDateComponents *comps = [[NSDateComponents alloc] init]; [comps setYear:1969];

[comps setMonth:4]; [comps setDay:30]; [comps setHour:13]; [comps setMinute:10]; [comps setSecond:0];

NSCalendar *g = [[NSCalendar alloc]

initWithCalendarIdentifier:NSGregorianCalendar]; NSDate *dateOfBirth = [g dateFromComponents:comps];

Для получения количества секунд между двумя экземплярами NSDate следует использовать метод timeIntervalSinceDate:

double d = [laterDate timeIntervalSinceDate:earlierDate];

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

По теме:

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