My:Objective-C — различия между версиями
WikiSysop (обсуждение | вклад) |
WikiSysop (обсуждение | вклад) (→Наследование классов) |
||
Строка 59: | Строка 59: | ||
-(void) printVariable{ NSLog(@"var1 = %d", var1); } | -(void) printVariable{ NSLog(@"var1 = %d", var1); } | ||
@end | @end | ||
+ | </pre> | ||
+ | Используем классы: | ||
+ | <pre class="brush:cpp; gutter: false;"> | ||
+ | Class2 *cl2 = [[Class2 alloc] init]; // создаем экземпляр класса | ||
+ | [cl2 setVariable]; | ||
+ | [cl2 printVariable]; | ||
+ | [cl2 release]; | ||
+ | </pre> | ||
+ | |||
+ | == Строки - это объекты == | ||
+ | |||
+ | <pre class="brush:cpp; gutter: false;"> | ||
+ | NSString *string1 = @"String one"; // новая строка | ||
+ | NSString *string2 = [NSString stringWithString:string1]; // на её основе создаем еще одну | ||
+ | NSString *string3 = [[NSString alloc] initWithString:string1]; // выделяем память | ||
+ | [string3 release]; // освобождаем память | ||
+ | |||
+ | NSString *formatString = [NSString stringWithFormat:@"Строка (%@) имеет длину %i" , string1, string1.length]; | ||
+ | NSLog(@"%@",formatString); | ||
+ | |||
+ | NSString *lower = [@"LOWER CASE ME" lowercaseString]; // в нижний регистр | ||
+ | NSString *capitalize = [@"capitalize me" capitalizedString]; // в верхний регистр | ||
+ | |||
+ | NSString *students = @"Tom, Bill, Joe"; | ||
+ | NSArray *sArray = [students componentsSeparatedByString:@", "]; // разбиение на слова | ||
+ | NSLog(@"%@", sArray); | ||
</pre> | </pre> |
Версия 08:58, 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, но вы получите исключение в рантайме, если такая возможность не поддерживается.
Наследование классов
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
Используем классы:
Class2 *cl2 = [[Class2 alloc] init]; // создаем экземпляр класса [cl2 setVariable]; [cl2 printVariable]; [cl2 release];
Строки - это объекты
NSString *string1 = @"String one"; // новая строка NSString *string2 = [NSString stringWithString:string1]; // на её основе создаем еще одну NSString *string3 = [[NSString alloc] initWithString:string1]; // выделяем память [string3 release]; // освобождаем память NSString *formatString = [NSString stringWithFormat:@"Строка (%@) имеет длину %i" , string1, string1.length]; NSLog(@"%@",formatString); NSString *lower = [@"LOWER CASE ME" lowercaseString]; // в нижний регистр NSString *capitalize = [@"capitalize me" capitalizedString]; // в верхний регистр NSString *students = @"Tom, Bill, Joe"; NSArray *sArray = [students componentsSeparatedByString:@", "]; // разбиение на слова NSLog(@"%@", sArray);