문제

@interface 거기에 NSArray *Monate 다음과 같은

@property (nonatomic, retain) NSArray* Monate;

만약 내가한다면:

filePath = [[NSBundle mainBundle] pathForResource:@"SomeFile" ofType:@"plist"];
self.Monate = [NSArray  arrayWithContentsOfFile:filePath];

생성자에서는 자동 소개 객체로 설정됩니다 (정확합니까?). 그래서 내가해야하나요 [Monate retain] 나중에?

도움이 되었습니까?

해결책

이 코드는 정확합니다. 보유 전화를 추가해서는 안됩니다.

+[NSArray arrayWithContentsOfFile:] AutorELeased를 반환합니다 NSArray. 그것을 전달합니다 -[YourClass setMonate:] 물체를 유지하고 후원 IVAR에 할당합니다. 생성자가 돌아온 후 새 NSArray 유지 수는 2이며 현재 자동 제출 풀에 한 번 추가됩니다 (순 그물 수는 1).

거래소에서 배열을 릴리스하는 한이 코드가 정확합니다.

다른 팁

당신은 후에 보유하지 않아야합니다. @property of retain을 설정하면 self.monate setter를 사용할 때 특별한 일이 발생합니다.

1) Monate 인스턴스 변수의 모든 것이 릴리스됩니다.
2) 새로운 과제는 유지됩니다.

@property of antary를 사용하려면 유지해야하지만, 당신은 당신이있는 그대로 괜찮습니다.

참고로, 대상 C에서 대문자 단어는 일반적으로 클래스 이름을 위해 예약되어 있습니다. 나는 "Monate"대신 "Monate"에 그것을 sugges니다.

nsarray arraywithContentsOffile :]; 방법의 끝보다 더 오래 매달려면 유지 해야하는 자동 엘라 드 배열을 반환합니다.

귀하의 재산 선언이 어떻게 '유지'를 지정하는지 확인하십시오. 이것은 모든 self.property = x를 의미합니다. 당신이하는 전화는 당신이 통과하는 객체를 유지합니다.

그래서 당신이하는 일이 맞습니다. self.property = nil; 당신의 거래 방법에서.

NIL에 속성을 설정하면 이전 객체를 풀고 포인터를 NIL로 설정합니다. 이것이 올바른 방법입니다.

라이센스 : CC-BY-SA ~와 함께 속성
제휴하지 않습니다 StackOverflow
scroll top