My:Objective-C — различия между версиями

Материал из synset
Перейти к: навигация, поиск
Строка 5: Строка 5:
 
[a doSomething];  // Obj-C
 
[a doSomething];  // Obj-C
 
</pre>
 
</pre>
 +
Интерфейс объектов в Objective-C выглядит следующим образом:
 +
<pre class="brush:cpp; gutter: false;">
 +
@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
 +
</pre>
 +
Rect  — имя нового класса.
 +
id — это указатель на объект Objective-C. Это эквивалентно void* в C, к которому вы можете привести любой тип указателя на объект, а также привести его к любому другому типу указателя на объект. Вы можете попробовать отправить какое-нибудь сообщение к id, но вы получите исключение в рантайме, если такая возможность не поддерживается.

Версия 08:32, 23 сентября 2011

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, но вы получите исключение в рантайме, если такая возможность не поддерживается.