2011-05-14 3 views
1

NSMutableArray의 속성이 (비 원자력, 유지), 어떤 이유로 풀려나고 있는데, 여기에 코드를 대입하면 (tableData는 NSMutableArray입니다.) :NSMutableArray가 출시 되나요?

tableData = [[[NSMutableArray alloc] init] autorelease]; 

count는 1입니다. tableData에 할당 할 때 보유 개수는 2입니다. 자동 릴리스에서는 runloop 끝에서 1로 이동해야합니다 (원하는 위치). 그러나 이것은 일어나지 않습니다. 나중에 참조하고 메서드를 실행할 때 무작위 개체 (마지막으로 UITabBarSwappableImageView 였음)가 표시되고 인식 할 수없는 선택기가 전송되었다고 표시됩니다. 어떤 점이 의미가 있습니까? 물체가 풀려나고 다른 물체가 물체를 잡습니다 ...하지만 풀어지는 이유는 무엇입니까? 고마워.

답변

2

도트 구문을 사용 했습니까? 그렇지 않은 경우 합성 된 setter는 사용되지 않으므로 참조가 유지되지 않습니다.

는 다음과 같이 지정해야합니다 이 카운트를 유지 변경하지 않습니다 tableData에 할당하기 때문에이 출시 점점

self.tableData = [[[NSMutableArray alloc] init] autorelease]; 
+1

FML을. 나는 그것을 어떻게 놓쳤는가? 감사... – user635064

3

.

단순히 포인터 값을 메모리의 한 슬롯에서 다른 슬롯으로 복사하는 것입니다. 그게 전부 야. 소유권이 변경되었음을 알리는 메시지는 발송되지 않습니다.

당신은 실제로 setter 메소드 호출해야합니다

[self setTableData:[NSMutableArray array]]; 

을 아니면 도트 구문 선호하는 경우 :

self.tableData = [NSMutableArray array];