My:Objective-C

Материал из synset
Перейти к: навигация, поиск

Objective-C — это расширенный набор C. Каждая программа, написанная на C, является корректной программой Objective-C. Все новые ключевые слова в Objective-C начинаются с символа @, который не является корректным идентификатором C. Кроме этого вызов методов объектов осуществляется при помощи сообщений [object message];

 
a.doSomething();   // С++
[a doSomething];   // Obj-C

Интерфейс объектов в Objective-C выглядит следующим образом:

 
@interface Rect : NSObject
{
   float     x, y;
   float     width, height;
   BOOL      isFilled;
   NSColor * color;
}
+ newRect;
- (void) display;
- (float) width;
- (float) height;
- (float) area;
- (void) setWidth: (float) theWidth;           // void setWidth(float theWidth)
- (void) setHeight: (float) theHeight;
- (void) setX: (float) theX y: (float) theY;
@end

Rect — имя нового класса. id — это указатель на объект Objective-C. Это эквивалентно void* в C, к которому вы можете привести любой тип указателя на объект, а также привести его к любому другому типу указателя на объект. Вы можете попробовать отправить какое-нибудь сообщение к id, но вы получите исключение в рантайме, если такая возможность не поддерживается.

Наследование классов

Class1.h:

 
#import <Foundation/Foundation.h>
@interface Class1 : NSObject {
    int var1;
}
-(void) setVariable;
@end

Class1.m:

 
#import "Class1.h"
@implementation Class1
-(void) setVariable{ var1 = 5; }
@end

Class2.h:

 
#import <Foundation/Foundation.h>
#import "Class1.h"
@interface Class2 : Class1 {    
}
-(void) printVariable;
@end

Class2.m:

 
 #import "Class2.h"
@implementation Class2
-(void) printVariable{ NSLog(@"var1 = %d", var1); }
@end