My:Objective-C

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

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

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

Пример

Ниже следующий пример можно откомпилировать online: http://ideone.com/

 
#import <objc/objc.h>
#import <objc/Object.h>

@interface MyObj : Object
{
    int num;
}
- (void) print;                // void MyObj::print()       - процедура 
- (int)  getVal;               // int  MyObj::getVal()      - функция   
- (void) setVal: (int) v;      // void MyObj::getVal(int v) - функция с параметром
- (int)  calc:(int)x : (int)y; // int  calc(int x, int y)
@end

@implementation MyObj
- (void) print                   { printf("num=%d\n", num); }
- (int)  getVal                  { return num;  }
- (void) setVal :(int) v         { num = v;     }
- (int)  calc   :(int)x : (int)y { return x/y;  }
@end

int main()
{
   id obj = [[MyObj alloc] init];
   [obj setVal: 5];
   printf("num =%d\n", [obj getVal]);
   printf("calc=%d\n", [obj calc: 6 : 3]);
   [obj print];

   return 0;
}

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

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);

iPhone: Hello world

см. [1]. откройте файл HelloWorldViewController.m найдите метод viewDidLoad. Раскомментируйте его и напишите:

- (void)viewDidLoad
{
   [super viewDidLoad];
    
   UILabel *helloWorld = [[UILabel alloc] initWithFrame:CGRectMake(100.0f, 100.0f, 100.0f, 20.0f)];
   helloWorld.backgroundColor = [UIColor clearColor];
   helloWorld.text = @"Hello world";
   [self.view addSubview:helloWorld];
   [helloWorld release];
}

Файловая система iOS

Приложение имеет доступ только к своей "песочнице". При этом, записывать или изменять файлы можно осуществить только в папке документов (Documents) конкретного приложения. Остальные файлы доступны только для чтения.