Полагаю, вы говорите об использовании FirstClass в другом исходном файле, чем его собственный, верно?
В этом случае вам придется импортировать его заголовок, добавив его в начало вашего второго класса '«.m» -file:
#import "FirstClass.h"
Если вам также нужно сослаться в файле заголовка «.h» второго класса, то вы можете добавить
@class FirstClass;
доблок @interface
.Это скажет компилятору, что он должен рассматривать класс с таким именем как существующий, но не беспокоить вас предупреждениями, если вы не забудете импортировать указанный файл ".h" первого класса во файл ".m" второго класса..
Чтобы разрешить доступ посторонних объектов к iCar firstClass вашего SecondClass, вам необходимо реализовать метод getter для firstClass.
Это делается с помощью
@property (nonatomic, readwrite, retain) FirstClass *firstClass;
в блоке @interface
и
@synthesize firstClass;
в блоке @implementation
.
С помощью этой настройки вы можете либо вызвать [secondClassInstance firstClass];
, либо получить к нему доступ через синтаксис точки secondClassInstance.firstClass;
.В моем примере также будет синтезирован метод сеттера setFirstClass:
.Чтобы сделать свойство доступным только для чтения, измените readwrite
на readonly
в объявлении @property
.
Пример:
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