2012-04-21 8 views
0

NSMutableArray에 작성한 것보다 이미 존재하는 다른 클래스에서 NSMutableArray에 액세스하려고합니다. NSLog가 있으면 null이됩니다. 내 프로그램을 class2에서 시작한 다음 class1을 segue하고 하나 이상의 행을 눌러 NSMutableArray를 만든 다음 class2에 업데이트 된 NSMutableArray 인스턴스를 가져 오려면 모두 null입니다. 아래 코드 :다른 기존 클래스의 NSMutableArray에 액세스하십시오.

+0

이있을 수 있습니다.이 시점에서 빈 배열이있는 FocusTagTableViewController를 초기화 한 직후 배열 요소를 보려고하기 때문일 수 있습니다. – Anila

답변

2

클래스 2에서 클래스 1의 새 인스턴스를 만들기 때문에 빈 배열이 생성 되었기 때문입니다. 클래스 2에서 해당 배열에 액세스하려면 해당 첫 번째 클래스에 대한 참조를 만들어야합니다. 아니면 Key-Value-Observing을 사용할 수도 있습니다. 여기

는 클래스 두를 만들 때, 그 배열에 대한 관찰자로 자기를 추가하고, observeValueForKeyPath 구현하는 첫 번째 클래스에서 KVO http://developer.apple.com/library/mac/ipad/#documentation/Cocoa/Conceptual/KeyValueObserving/KeyValueObserving.html

, 대한 문서입니다 : 클래스 방법을 1

+0

나는 아직도 객관적으로 상대적인 새로운 c 다. Key-Value-Observing을 어떻게 사용 하시겠습니까? –

+0

위의 문서를 읽으십시오. 정말 쉽습니다. –

+0

코드를 업그레이드했는데 오류 메시지가 나타납니다. Key Value 옵저버가 등록되어있는 동안 클래스 FocusTagTableViewController의 인스턴스 0x7e7e300이 할당 해제되었습니다. –

0

다음과 같이 시도하십시오.

1) class1 파일에서 class2.h 파일을 가져 오십시오.

2) 대신에, 당신의 클래스 1 파일에 설정된 객체를 allSelectedFocus를 사용하는 foo로 class2.h 파일

3) Class1의 파일

4 Class2의에 대한 객체를 생성)에서 세계적으로 NSMutableArray *foo 만들기 그 파일 자체에이 [class2Object.foo addObject:selectedFocus];

+0

전역 변수를 작성하지 않으려 고하므로 안타깝게도 해당 솔루션이 작동하지 않습니다. 그래도 고마워 :) –

관련 문제