2011-09-28 13 views
1

나는 NSMutableArray이며 다른 클래스에서 액세스해야합니다. 이것이 내가 지금까지 한 일이다. 다른 클래스에서 NSMutableArray에 액세스

  1. 은 내가 .h 파일 NSMutableArray *muArr@property(nonatomic, retain) NSMutableArray *muArr을 선언했다.

  2. .m 파일 @synthasize muArr;, 그리고 마지막으로 그것을 채워 :

    [muArr addObject: @"First"];

  3. 지금 SecondView에서 나는 import 문 #import "FirstView.h"를 추가 썼다 : FirstView *frv = [[FirstView alloc]init]; 다음 NSLog(@"%i",[frv.muArr count]);

이 라인을 코드는 viewDidLoad 방법으로 작성됩니다. 그리고 NSLog이 인쇄되었을 때 1 대신에 0 레코드가 있습니다.

왜 이런가요? 내가 잘못한 점과 누군가 샘플 코드/튜토리얼을 보여줄 수 있습니까?

+0

muArr을 채우는 방법은 addObject : call입니다. –

+0

'didSelectRowAtIndexPath' 안에 썼습니다. 그래서 사용자가 셀/행을 클릭 할 때. 이 메소드는 실행되고'muArr'가 채워집니다. – Illep

+1

실제로 NSMutableArray를 만들었습니까 ?? 나는 그것을하는 성명을 보지 못한다. –

답변

1

행을 선택할 때까지 호출되지 않는 을 didSelectRowAtIndexPath에 채우고 있습니다. FirstView에서 init을 호출하면 새로운 FirstView를 만든 다음 즉시 muArr의 수를 확인합니다. 당신이 행을 선택 아직하지 않았기 때문에 카운트 당신은 SecondView 클래스에

1 단계 (당신이 muArr를 만드는 것과 같은 방식으로)) 속성을 작성해야합니다 ..

+0

이렇게하면 행을 클릭하면'muArr'가 채워지고 페이지가'FirstView'로 리디렉션됩니다. 그래서'muArr'에 액세스하여 그 수를 가져와야합니다. – Illep

+0

'SecondView'로 리다이렉트된다는 뜻인가요? 귀하의 단계는 (1) FirstView가로드되고, (2) 사용자가 행을 클릭하며, (3) 두 번째보기가로드되고 FirstView 배열의 값을 확인해야합니다.이 경우 SecondView에 'FirstView'에 대한 참조를 전달해야합니다. - 'alloc'과'init'를 사용하여 새로운 FirstView를 새로 만듭니다. –

0

0 : arrOfSecondView 말할 수 있습니다 당신은

SecondView *secondView = [[SecondView alloc]init]; 
    secondView .arrOfFirstView = muArr; 
    //and i guess you are pushing to secondView controller 

단계 3) arrOfFirstView을 확인 카운트가

2 단계) 이제 arrOfSecondView하기 위해 muArr 데이터를 추가 할 수 있습니다 합성

+0

왜이 작업을 수행해야합니까? muArr에 직접 액세스하는 것과 같지 않습니까? 'muArr'가'0'의 카운트를 리턴하면'arrOfFirstView'가'0'을 리턴하지 않습니까? – Illep

+0

아니요, 처음 뷰에서 객체를 초기화하고 추가하고 두 번째 뷰에서 사용하려는 경우 muArr이 0이 될 수 있습니다. –

0

배열을 할당합니까? 당신이 항목을 추가하기 전에, 당신이 그렇게하지 않으면

myArr = [[NSMutableArray alloc] init]; 

로를 할당 할 필요는 [addObject] 호출은 프로그램을 충돌하지 않지만 영향을주지 않습니다. 그리고 배열의 count은 영원히 영원을 유지할 것입니다.

@ 합성은 대중적인 믿음과는 달리 ivar을 할당하지 않습니다. getter 메소드와 옵션으로 setter 메소드를 생성합니다.

+0

예, 배열을 할당 한 다음 값으로 채 웁니다. – Illep

관련 문제