2011-04-05 5 views

답변

0

나는 속성을 사용합니다.아마

@synthesize first; 

당신의 객체를 생성 할 때보다

@property (nonatomic, retain) FirstClass *first; 

같은 두 번째 수준의 뭔가의 헤더와 구현에 SecondClass

SecondClass *second = [[SecondClass alloc] init]; 

당신이 사용할 수있는

second.first 
2

다른 소스 파일에서 FirstClass를 사용하는 것에 대해 이야기하고 있다고 생각합니까? 당신이 "하는 .m"-file '두 번째 클래스의 상단에이를 추가하여 헤더를 수입해야 할 것이 경우

:

#import "FirstClass.h" 

당신은 또한 당신의 두 번째 클래스에서 참조해야하는 경우 '헤더'.H "-file는, 당신은 @interface 블록 전에

@class FirstClass; 

를 추가 할 수 있습니다. 이것은 컴파일러에게 그 클래스의 클래스가 존재한다고 생각해야한다고 알려줄 것입니다.하지만 두 번째 클래스의 ".m"파일에 주어진 첫 번째 클래스의 ".h"파일을 가져 오는 것을 잊지 않는 한 경고를 보내지 않아도됩니다. .

외부 개체에서 SecondClass의 firstClass iVar에 액세스 할 수있게하려면 firstClass에 대한 getter 메서드를 구현해야합니다.

이는 @implementation 블록

@property (nonatomic, readwrite, retain) FirstClass *firstClass; 
@interface 블록

@synthesize firstClass; 

로 이루어진다.

이 설정을 사용하면 [secondClassInstance firstClass];을 호출하거나 도트 구문 secondClassInstance.firstClass;을 통해 액세스 할 수 있습니다. 샘플은 setFirstClass:이라는 세터 메소드를 합성합니다. 속성을 읽기 전용으로 만들려면을 입력하십시오. @property 선언에서 readwritereadonly으로 변경하십시오.

샘플 :

FirstClass.h :

#import <Cocoa/Cocoa.h> 

@interface FirstClass : NSObject { 
@private 

} 

//method declarations 

@end 

FirstClass.m :

#import "FirstClass.h" 

@implementation FirstClass 

//method implementations 

@end 

SecondClass.h :

#import <Cocoa/Cocoa.h> 

@class FirstClass; 

@interface SecondClass : NSObject { 
@private 
    FirstClass *firstClass; 
} 

@property (nonatomic, readwrite, retain) FirstClass *firstClass; 

//method declarations 

@end 

SecondClass.m :

#import "SecondClass.h" 

#import "FirstClass.h" 

@implementation SecondClass 

@synthesize firstClass; 

- (id)init { 
    if ((self = [super init]) != nil) { 
     firstClass = [FirstClass alloc] init]; 
    } 
    return self; 
} 

- (void)dealloc { 
    [firstClass release]; 
    [super dealloc]; 
} 

//method implementations 

@end 
+0

FirstClas 처음 *; secondclass에서 선언되었고 Firstclass에서 "first"를 사용하고 싶습니다. – CrazyDev

+0

속성 선언이 추가되었습니다. 내 대답을 다시 확인하십시오. – Regexident

관련 문제