2011-09-14 6 views
1

에 나는 문제가 나는 내가있는 tableview을 가지고 있고 나는 속성 이름 newsData이NSArray를 CALayerArray

에 무슨 일이 일어나고 있는지 알아낼 수 없습니다. 나는 모든 것을 설치하고 잘 작동합니다! 그런 다음 시뮬레이터에서 메모리 경고를 호출하여 앱이 작동하는 방식을 확인합니다. tableview가 해제되고 viewdidload를 호출하면이 배열이 이제 CALayerArray 클래스임을 알 수 있습니다 !!! 프로그램에 액세스하려고하면 프로그램이 다운됩니다!

무슨 일입니까? 도움 주셔서 감사합니다.

답변

2

viewdidload 호출 내에서 tableview를 재 할당 했습니까? 그것을 발표 한 후에는 그렇게해야합니다. 당신은 (이 여전히 재 할당하고 당신이 그것을 발표 후있는 tableView를 초기화 할 필요!)가 충돌을 피하기 위해, 그것을 해제 후있는 tableView 전무를 설정할 수 있습니다

[tableView release]; 
tableView = nil; 

Clearification을 : 내 말 해달라고, 당신이 필요로하는 당신이 그것을 놓은 후에 아무 객체도 설정하지 마라! 그러나 그것을 공개 한 후에, 당신은 이미 출시 된 객체를 인식해야합니다!

+0

출시 된 모든 개체를 기본값으로 설정하지 않는 것이 좋습니다. 해제하지 않는 것이 좋은 이유는이 출시 된 객체를 참조하려고하면 앱이 다운되는 것입니다. 당신이 그것을 nil로 설정했다면, 충돌하지는 않지만 여전히 작동하지 않을 것입니다. 이로 인해 문제 해결이 어려워집니다. – GorillaPatch

+0

나는 우리가 모두 올바른 방식이라고 생각한다. nil 설정은 필요하지 않아야합니다 (SHOULD). 어쨌든 개체를 해제하면 더 이상 사용하지 않아야합니다. 그래도 사용하려면 코드를 너무 많이 사용해야합니다. – jules

+0

전적으로 동의합니다. 방금 릴리스 된 모든 객체를 자동으로 nil로 설정하려면 @auslander를 사용하지 않으려했습니다. – GorillaPatch

0

코드에 따라 여러 가지 원인이있을 수 있습니다. 첫째, "테이블 뷰가 있고 newsData라는 속성 이름이 있습니다."라고 말하면 혼란 스럽습니다. newsData은 어떤 물건입니까? UITableView의 하위 클래스를 만들었습니까? 아니면이 값이 UITableViewDataSource의 ivar입니까?

newsData은 무엇입니까? NSData 인 것처럼 들리지만, NSArray이라고 말하고 있습니까?

먼저 newsData을 할당 할 때마다 감사해야합니다. 대부분의 경우 나는 NSArray을 반환하지 않는 무언가에 지정한다고 말하고 싶습니다. 이 경우에는 CALayerArray이 비공개이므로 의심 스럽습니다. 이것은 다른 용도로 사용되는 메모리에 액세스하는 것처럼 보입니다. 메모리 경고 코드와 viewDidUnload: 코드를 확인하고 정적 분석기를 처음 실행하십시오.

+0

혼란을 드려 죄송합니다. 내가 tableview 컨트롤러가 있고 NSArray newsData 개체를 보유하고있다. 내 주요 코드가 잘 작동하고있다! 누수가 없으며 모든 것이 부드럽고 매끄 럽습니다. 문제는 메모리 경고를 트리거 한 후입니다. 그 후 newsData 클래스는 CALayerArray 클래스입니다. 그리고 내가 그것에 접근하려고 할 때 그것은 부서진다!! – auslander