Címlap webTECH mobilTECH OM & Social online Smart & IOT PC / Mac Tech világ Minden más

Objective-C + Xcode = iOS app, kezdhetjük?

2019. február 26. 15:33

mobilTECH bodorfeco ios xcode objective-c

Azt hiszem, mondhatom, hogy sok fejlesztőkörnyezetet és programnyelvet használtam már és az is valószínű, hogy nem sokan osztják a véleményemet én mégis úgy gondolom, hogy az Objective-C és az Xcode a best of.

Elsősorban iOS (iphone, ipad) alkalmazások fejlesztéséhez használom az Xcodot, így a cikk is ehhez fog kapcsolódni, de érdemes megemlíteni, hogy ezt a fejlesztőkörnyezetet használjuk egyéb Apple eszközökre való fejlesztéshez is, úgy mint Mac (OSX), Apple TV (TV OS) vagy épp az Apple Watch-hoz is.

A főbb eszközök az Xcodeban

- Kód szerkesztő: tud mindent ami elvárható (kód kiemelés, szövegkiegészítés, stb)
- Design editor: nagyon jól működő és könnyen használható vizuális szerkesztő az alkalmazásunk layoutjának megtervezéséhez
- Emulátor: egy kattintással futtathatjuk, tesztelhetjük a készülő alkalmazást különbőző méretű iPhone és iPad szimulátorokkal
- Asset Manager: az alkalmazásban használt grafikák kezeléséhez használhatjuk, ide tartozik például az alkalmazás ikonja amit ez az eszköz segít a megfelelő méretekben összeállítani
- Application Loader: használatával feltölthetjük az alkalmazást közvetlenül az AppStore-ba

HELLO WORLD

Akkor lássuk egy Hello World példán keresztü, hogy hogyan hozható létre egy iOS alkalmazás, mik a főbb életciklusai ViewControllernek és milyen az Objective-C szintaktikája.
 
Xcode->File->New->Project majd több mintából is választhatunk, a legtöbb lehetőséget mégis a Single View App adja (mert ebből később még bármi lehet :D)
Miután a projekt létrejött kezdődhet a kódolás UI építés tesztelés, alábbiakban pedig egy kis útmutatás a kezdő lépésekhez.
 
Az editor bal oldalán láthatjuk a projekthez tartozó fájlokat, nézzük mi mire való.

View Controller (ViewController.h / ViewController.m)

Nos, a View Controller-ek vezérlik az alkalmazásunk nézeteinek működését. Az újonnan létrehozott projektben a Main.storybord fájban látható, hogy létrejött egy "nézet" ami ehhez a kontrollerhez van rendelve. (A storyboard fájlról később). Amikor betöltődik egy nézet (emi egyébként sok sok kis egyéb nézetet (gombok, listák, stb) tartalmazhat) akkor logikai vezérlését, működését a hozzá rendelt kontroller osztályban kell implementálni.
 
Az Xcode által létrehozott ViewController.m-be belekukkantva egy metódos már tartozik is az osztályhoz viewDidLoad néven és a hozzá tartozó komment "Do any additional setup after loading the view." jelzi is, hogy az iOS rendszer ezt a metódust fogja futtatni miután a nézet betöltödött. Fontos megjegyezni, hogy a viewDidLoad -hoz hasonló további életciklus függvények is vannak amikkel idővel érdemes megismerkedni.
- (void)viewDidLoad {
    [super viewDidLoad];
    // Do any additional setup after loading the view.
}

Main.storyboard

Erre a fájlra kattintva egy vizuális UI tervező jelenik meg amin egy kijelzőre hasonlító "ablak látszik" aminek a működését az előbbiekben röviden bemutatott kontroller vezérli. Ezen elhelyezhetünk gombokat, feliratokat és számos további komponenst (lsd. alábbi képen) amiknek az eseményeit majd a kódban lekezelhetjük.

Jöhet az első HelloWorld app :)

A következő működésű alkalmazást fogjuk megvalósítani: miután elindul az app egy gomb megnyomására a képernyőre írja a hello World szöveget.
 
1. A Main storyboardra helyezzünk el két komponenst, egy label-t és egy gombot (button).
2. A gomb és a label komponenseket kössük össze a kontrellerrel. Ehhez az alábbi kép szerint egymásmellé rendezhetjük a Storyboard és a kontroller ablakot az Xcodeben és a komponensre kattintva a Ctrl gombot nyomvatartva "behúhható" az adott elem hivatkozása a kontrollerbe tetszőlegesen elnevezve (nálam text és but).

3. Kontroller viewDidLoad fügvényében alábbi kóddal megvalósítjuk, hogy kattintható legyen a gomb és mikor ez az esemény bekövetkezik akkor a label szövege változzon Hello World! -re.

#import "ViewController.h"

@interface ViewController ()
@property (strong, nonatomic) IBOutlet UILabel *text;
@property (strong, nonatomic) IBOutlet UIButton *but;

@end

@implementation ViewController

- (void)viewDidLoad {
    [super viewDidLoad];
    
    [self.but addTarget:self action:@selector(btnClick)  forControlEvents:UIControlEventTouchUpInside];
}

- (void)btnClick {
    [self.text setText:@"Hello World!"];
}


@end

Az objective-c szintaktikája elsőre talán fura, de idővel megszokható néhány főbb jellemző a kezdetekhez.

//myClass osztály egy változójának elérés
myClass.myVal

//myClass osztály egy függvényének hívása
[myClass myFunction]

//myClass osztály egy függvényének hívása egy paraméterrel
[myClass myFunction:param]

Bízok benne, hogy tetszett a cikk és kellemes kódolást kívánok a folytatáshoz :)

nekTECH.online

Kapcsolat | Impresszum | Médiaajánlat | GDPR