Файл с файлом Car.m
выглядит следующим образом. Здесь у меня есть 1 частный метод engineStarting.Нет видимого @interface для класса
Здесь я использовал концепцию расширения класса, чтобы ввести частный метод , и я также использовал Car+Maintainance
как категорию.
#import "Car.h"
//private methods
@interface Car()
-(BOOL) engineStarting;
@end
@implementation Car
@synthesize model=_model;
-(void)drive{
NSLog(@"%@ is driving",_model);
}
-(void)stop{
NSLog(@"%@ has stopped now",_model);
}
-(void)turnleft{
NSLog(@"%@ is turning left",_model);
}
-(void)turnright{
NSLog(@"%@ is turning right",_model);
}
-(BOOL) engineStarting{
return true;
}
Мой main.m файл выглядит
#import <Foundation/Foundation.h>
#import "Car.h"
#import "Car+Maintanance.h"
int main(int argc, const char * argv[]) {
@autoreleasepool {
// insert code here...
NSLog(@"Hello, World!");
Car *car=[[Car alloc]init];
[email protected]"maruti";
//using car its own methods
// i am getting error in this line(no visible @interface......)
[car engineStarting];
[car drive];
[car stop];
[car turnleft];
[car turnright];
//using maintainanace
if([car neddOilChange]){
[car changeOil];
}
}
return 0;
}
Итак, что ваша цель? 'engineStarting' определяется внутри расширения класса, следовательно, не видимым с внешнего. Вам нужно объявить его в 'Car.h'. –
если я объявляю его в care.h, и он будет общедоступным. Я хочу, чтобы это было приватно –
Что вы хотите сделать? Какова ваша цель? Я думаю, вы должны прочитать о ООП. –