I있는 NSString 인터페이스 부분에 선언 있습니다있는 NSString과 retainCount 질문
@property (비 원자, 유지)는 NSString * 파일 경로를;
이 값을 제공하고 내 사용자 지정 메서드 중 하나에서 호출하려고 할 때 그것은 처음에는 작동하지만 두 번째로는 작동하지 않습니다. 필자의 의견으로는 filePath가 첫 번째 호출 중에 자동으로 리 레이스 (autoreleased)되었다.
내가 내 방법이 같은 짓을 한 다른 접근을 시도 :있는 NSString * 경로 = [[[있는 NSString 초기화] ALLOC] 오토 릴리즈] 경로 = [파일 경로 복사];
이 시간이 효과가있는 것 같습니다. 그러나 경로의 retainCount를 확인할 때 계속 증가하고 있습니다. 메서드가 처음 호출 될 때 retainCount는 4이지만 두 번째는 2이고 세 번째는 3입니다.
[file]이 (가) 커지기 때문에 filePath가 증가하는 것을 알았지 만 경로 변수가 왜 그렇게 되었습니까? 왜 첫 번째 경우에는 작동하지 않았습니까?
답장을 보내 주셔서 감사합니다. 가능한 한 잘 배우려고합니다. 나는 다음과 같은 상황에 처해있다. > NSDateFormatter * date_formater = [[NSDateFormatter alloc] init]; [date_formater setDateFormat : @ "yyyy-MM-dd"]; NSLog (@ "데이터 개수 : % i", [self.data retainCount]); self.data = [date_formater stringFromDate : [NSDate date]]; [date_formater release]; NSLog (@ "데이터 개수 : % i", [self.data retainCount]); 이유 : > 데이터 개수 : 0 데이터 개수 : 2 미리 알아 두십시오. – CristiC
이것은 실제로 새로운 질문이며, 원래의 질문에 병합 될 때 하나의 질문으로 처리되어야하지만, 대답은 'self.data'는 유지 된 속성이므로 할당시 유지된다는 것입니다. [date_formatter stringFromDate : ...]'는 보유 개수가 1 인 문자열을 반환하므로 총 길이는 2입니다.(함수가 완료되면 stringFromDate가 autorelease 풀에이를 추가했기 때문에 다시 1이됩니다) – mvds