내 코드에서, 클래스에서 나는 ivar목표 C : 다른 클래스에서 인스턴스 클래스 사용
FirstClass *first;
이 클래스의 인스턴스 내에서 first
를 사용할 수 있습니다.
하지만 다른 객체 인스턴스 (또는 다른 클래스)에서 first
에 액세스하려면 어떻게해야합니까?
내 코드에서, 클래스에서 나는 ivar목표 C : 다른 클래스에서 인스턴스 클래스 사용
FirstClass *first;
이 클래스의 인스턴스 내에서 first
를 사용할 수 있습니다.
하지만 다른 객체 인스턴스 (또는 다른 클래스)에서 first
에 액세스하려면 어떻게해야합니까?
나는 속성을 사용합니다.아마
@synthesize first;
당신의 객체를 생성 할 때보다
@property (nonatomic, retain) FirstClass *first;
같은 두 번째 수준의 뭔가의 헤더와 구현에 SecondClass
SecondClass *second = [[SecondClass alloc] init];
당신이 사용할 수있는
second.first
다른 소스 파일에서 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
선언에서 readwrite
을 readonly
으로 변경하십시오.
샘플 :
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
FirstClas 처음 *; secondclass에서 선언되었고 Firstclass에서 "first"를 사용하고 싶습니다. – CrazyDev
속성 선언이 추가되었습니다. 내 대답을 다시 확인하십시오. – Regexident