이러한 메서드를 접근 자 메서드이라고합니다. 이름에서 알 수 있듯이 변수를 검색하고 설정할 수 있습니다. 특히 변수를 "getter"및 "setters"라고합니다.
컨벤션, 예를 들어, 변수에 대한 "게터"를 호출하는 것입니다라는 NSString
(당신은 그러나 책의 뒷부분에서 볼 수, 컨벤션 이상입니다) foo
- (NSString*)foo;
그리고 "setter":
- (void)setFoo:(NSString*)newFoo;
위의 예제에서 메서드는 새 날짜 값을 설정하기 위해 구현됩니다. 메모리 관리는 4 장에서 설명합니다. 간단히 말해서 Objective-C 객체의 작동 방식은 객체에 "참조 횟수"가 있다는 것입니다. 이는 객체의 참조 수를 나타냅니다. 할당되면 개체의 보유 개수는 1입니다. 개체에 retain
또는 release
메시지를 보내고 보유 개수를 늘리거나 줄일 수 있습니다. retain
메시지는 메시지를 보내는 개체가 개체를 사용하기를 원하므로 retain
입니다. A release
메시지는 메시지를 보내는 개체가 더 이상 개체를 사용하지 않으므로 보유 수를 줄임을 의미합니다.오브젝트의 보유 수 (Retain Count)가 0에 도달하면, 오브젝트의 할당이 해제됩니다. 이 방법으로 메모리 누수가 방지됩니다.
date
이 보유되고 entryDate
이 릴리스되는 이유는 "알 수있는"새로운 개체 인 date
입니다. 따라서 귀하는 retain
로 소유권을 주장하고 있습니다. entryDate
변수는 현재 날짜 객체를 가리키고 있지만 새로운 값으로 설정했기 때문에 더 이상 알 필요가 없습니다. 그러므로 당신 release
그것; 이것은 원래이 변수를 유지할 것이므로 메모리 누수를 방지합니다.
이전에 말한 것처럼 4 장 : 메모리 관리을 읽으면 개념이 훨씬 명확 해집니다. 지금 당장은 그것을 받아들이고 그것이 설명 될 때 배후의 추론을 이해하십시오.
덧붙여 말하자면 메서드 이름이 "date"이고 매개 변수의 이름이 "date"이지만 형식이 NSCalendar 인 것처럼 보입니다. NSCalendar는 상상력에 의한 날짜가 아닙니다. NSDate를 사용하셨습니까? – Chuck
나는 실제로 NSCalendarDate를 지적했다. – Brad