A következő néhány cikkben megpróbálom összefoglalni az Objective-C alapokat, mit hogyan kell leírni ezen a nyelven. Elsőként nézzük a változók deklarálását!
Először is vannak a primitív típusok. Ezeknél csak a típust kell megadni és a változó nevét. Ezután már használatba is vehetjük a változónkat. Ilyen típusok lehetnek az int, float és a double. Használatuk a következő:
int age;
age = 30;
age = age + 1;
A primitív típusok után vegyük elő a különböző objektum típusú változókat. Itt meg kell említeni, hogy pointerekkel tudunk létre hozni objektumokból változókat a memóriában. A pointer az objektum memóriában elfoglalt helyére mutat. A pointereket egy "*" karakterrel jelöljük és csak a deklarációban kell szerepeltetni. Használat közben már nem kell kiírni. Vegyünk például egy stringet reprezentáló osztályt, ez az NSString. Deklaráljunk egy NSString típusú változót:
NSString *testNSString;
testNSString = [[NSString alloc] init];
Nézzünk meg még egy érdekes dolgot, a tulajdonságokat, vagy property-ket. Ha létrehozunk egy saját osztályt, azon belül biztos szükségünk lesz változókra. Ezeket a változókat elérhetjük úgy is, hogy készítünk egy getter és egy setter metódust, ez azonban kényelmetlen lehet, ha sok változónk van és egy idő után unalmas is lehet megírni gépiesen ezeket a metódusokat. Ha ezt nem szeretnénk, választhatjuk a következő módszert: az osztály interfészében deklaráljuk a változót és az Objective-C-re bízzuk a getter és setter metódusok generálását. Nézzünk egy példát:
#import <Cocoa/Cocoa.h>
@interface Message : NSObject {
NSString *greetingMessage;
}
@property (retain, nonatomic) NSString *greetingMessage;
- (void) greetings;
@end
A korábbi példánkat bővítjük ki. Az interfészbe felvettünk egy NSString típusú változót. A @property direktívával mondjuk meg hogy tulajdonságként szeretnénk használni a változót.
#import "Message.h"
@implementation Message
@synthesize greetingMessage;
- (void) greetings {
NSLog(greetingMessage);
}
@end
Az implementációs fájlban a @synthesize direktívával azt mondjuk meg, hogy az Objective-C generálja le nekünk a getter és setter metódusokat.
Az eddigieket pedig így használhatjuk:
#import <Foundation/Foundation.h>
#import "Message.h"
int main (int argc, const char * argv[]) {
NSAutoreleasePool * pool = [[NSAutoreleasePool alloc] init];
// insert code here...
Message * message = [[Message alloc] init];
message.greetingMessage = @"Property Test Message";
[message greetings];
[message release];
[pool drain];
return 0;
}
A példányosítás után értéket adunk a változónknak. A tulajdonságunknak köszönhetően "."-al hivatkozunk rá, nem "[]"-el, ahogy a példányosításnál is láttuk.
A követező post a controll flow témakörröl fog szólni.