Такие методы называются методами доступа . Они, как следует из названия, позволяют извлекать переменные и устанавливать - в частности, они называются «получателями» и «установщиками».
Соглашение (которое, однако, вы увидите в последующих главах книги, больше, чем соглашение) - вызывать «получатель» для переменной, например, NSString
, называемое foo
- (NSString*)foo;
И «сеттер»:
- (void)setFoo:(NSString*)newFoo;
В приведенном выше примере реализован метод установки нового значения даты. Управление памятью описано в Главе 4, но вкратце способ работы объектов Objective-C заключается в том, что они имеют «счетчик сохранения» - это отражает число ссылок, которые имеет объект; при выделении объекты имеют счет сохранения 1. Объекты могут затем быть отправлены в сообщение retain
или release
для увеличения или уменьшения счетчика хранения соответственно. Сообщение retain
подразумевает, что объект, отправляющий сообщение, хочет использовать объект, поэтому retain
s его. Сообщение release
подразумевает, что объект, отправляющий сообщение, больше не хочет использовать объект, следовательно, уменьшается счетчик сохраняемых данных. Когда счет сохранения объекта достигает 0, объект освобождается. Таким образом можно избежать утечек памяти.
Причина, по которой date
сохраняется и entryDate
освобождается, заключается в том, что date
- это новый объект, о котором вы хотите «знать»; поэтому вы заявляете право собственности на него, * retain
. Переменная entryDate
указывает на текущий объект даты, но поскольку вы устанавливаете его как новое значение, вам больше не нужно знать об этом; поэтому вы release
это; это предотвращает утечку памяти, поскольку вы изначально сохранили эту переменную.
Как я уже говорил, прочитав главу 4: Управление памятью , концепция станет намного более понятной. А пока просто примите это и поймите, почему это объясняется.