2012-08-07 5 views
0

나는 내 클래스 중 하나에 client라는 배열을 가지고 있는데, 그 배열에있는 정보를 다른 클래스에 사용하고 싶습니다. 속성을 설정하고 첫 번째 클래스에서 배열을 합성했습니다. 내 첫 번째 클래스의 코드는 내가 처음으로 클래스에 대한 시간의 파일을 가져 오기 한 후 바로 배열에 접근 시도 내 두 번째 클래스에서다른 클래스의 배열에 액세스하기

@synthesize client; 

... 


- (IBAction)testing:(id)sender { 
    NSString *textContent = myTextView.text; 
    textContent = [textContent stringByReplacingOccurrencesOfString:@" " withString:@""]; 
    client = [textContent componentsSeparatedByString:@"."]; 
    NSLog(@"%@", client); 
} 

입니다. 내가 사용하고 코드는

- (IBAction)ButtonStuff:(id)sender { 
    ArrayManipulationViewController *myClass = [[ArrayManipulationViewController alloc]init]; 
    NSLog(@"Second Interface"); 
    NSArray *test = myClass.client; 
    NSLog(@"%@", test); 
} 
+0

'alloc'이 새로운 객체를 생성한다고 생각하면 어렵습니다. 즉, 이전에 가지고 있던 것과 완전히 다른 것입니다. 당신이 이전에 저장 한 것에 관한 것. –

답변

0

는 여러 클래스에서 개체에 액세스하는 일반적인 방법은 부모 클래스의 객체를 선언하고 액세스가 필요한 모든 하위 클래스에 해당 객체의 공유 인스턴스를 전달하는 것입니다 . 예를 들어, AppDelegate에 배열을 선언하고 서브 클래스에 배열 속성을 설정하고 배열의 인스턴스를 AppDelegate에서 모든 하위 클래스로 전달할 수 있습니다.

예 : 앱 대행자에서 NSArray (myArray)를 만든 다음 AppDelegate 이식에서 속성을 사용하여 myArray 인스턴스를 하위보기 컨트롤러에 전달합니다.

또는 원하는 경우; 첫 번째 클래스에서 배열을 선언 한 다음 속성을 사용하여 첫 번째 클래스의 배열 인스턴스를 두 번째 클래스로 전달할 수 있습니다. 그런 다음, INSTANCE가 동일하므로 2 등급 수업의 모든 변경 사항을 1 학년에서 사용할 수 있습니다.

업데이트 된 답변 : 두 번째 방법은 첫 번째 클래스 구현에서 배열을 선언하는 것이 가장 좋으며 두 번째 클래스를 인스턴스화 할 때 속성을 사용하여 두 번째 클래스에 배열 인스턴스를 전달합니다.

@interface SecondClass : NSObject 
{ 
    NSArray *client; 
} 

@property (nonatomic, retain) NSArray *client; // don't forget to synthesize 
@end 

그런 다음 :이 예에서는 다음과 같을 수 [secondClassInstance setClient: client];

두 번째 클래스 인터페이스를 사용하는 동안 배열을 전달 할 수 있도록 두 번째 클래스에있는 NSArray 속성을 가지고해야합니다 첫 번째 수업에서는 배열의 인스턴스를 전달하기 위해 다음을 할 수 있습니다 :

NSArray *client = [[NSArray alloc] initWithObjects:@"Object 1", @"Object 2"]; 

//... 

SecondClass *secondClass = [[SecondClass alloc] init]; 
[secondClass setClient: client]; // passing the original client instance here 

// don't forget to release secondClass instance when finished 
+0

두 번째 방법을 시도하면서 배열의 위치가 원하는 부분에 대해 이야기했습니다. 나는 속성을 사용하려고했지만 Objective c와 xcode에 대해 아직 익숙하지 않아서 내가 옳다고 생각하지 않습니다. 어떻게하는지 자세히 설명해 주시겠습니까? – Dravus

+0

답변을 업데이트했습니다. 다행스럽게도 이것은 드라 버스 (Dravus)에게 더 유용 할 것입니다. – TeaPow

+0

좋아, 나는이 모든 시도하고 두 번째 클래스의 NSLog 배열 할 때 null 말한다. 그러나 첫 번째 클래스에서 NSLog를 수행하면 어레이를 올바르게 인쇄합니다. 내 코드에서 필요한 것이 있으면 알려주도록 부탁드립니다. – Dravus

관련 문제