You are on page 1of 16

Lm Quen Vi XCode Phn 1

In Xcode Gi s bn ci t cc cng c pht trin, bn s tm thy trong Xcode /Developer/Applications/. Ko ng dng vo dock pha di mn hnh ca bn, bn s c s dng n rt nhiu. Xcode khi chy. Create a New Project Di trnh n File, chn New Project.... Khi cc bng iu khin s xut hin (xem Hnh 2.2), chn cc loi hnh d n, bn mun to: Cocoa Application. Lu rng rt nhiu cc loi cc d n c sn

Application: Mt chng trnh chy di dng ca s. Tool:Mt chng trnh m khng c mt giao din ngi dng ha. Thng thng,Tool l mt dng lnh tin ch hoc l mt daemon chy trn nn(background.) Bundle or framework: Mt th mc cc ngun ti nguyn c th c s dng trong mt application hoc mt tool Mt Bundle (cn gi l mt plug-in) l kiu np ng ti runtime. i Tn project l RandomApp, nh hnh 2.3. ng dng c tn hoa thng. Bn cng c th chn cc th mc vo th mc m project ca bn s c to ra. Theo mc nh, mc cc d n ca bn s c to bn trong th mc chnh ca mnh. Bm vo nt Finish

Mt mc project, vi phn khung(skeleton) c sn ca mt ng dng bn trong n, s c to ra cho bn. Bn s m rng phn khung ny vo source, hon tt application v sau bin son cc application Xem project mi trong Xcode, bn s thy mt ct pha bn tri ca ca s. Tt c cc mc trong giao din i din cho mt loi thng tin c th s c ch cho mt lp trnh vin. Mt s l tp tin; tin nhn, chng hn nh bin li hoc tm thy kt qu. By gi, bn s c lm vic vi chnh sa tp tin, nn chn RandomApp xem cc tp tin s c bin son vo mt application. The skeleton c to ra cho cc bn bin son v chy. N c mt trnh n v ca s. Bm vo mc trn thanh cng c vi mu xanh l cy ba v vng trn xy dng v chy d n (build and Go)

Trong khi application chy, bn s thy xut hin biu tng trong dock. Tn ca ng dng ca bn sau s xut hin trong cc trnh n. iu ny c ngha l ng dng ca bn l by gi ang hot ng. Cc ca s cho cc ng dng ca bn c th c n theo mt ca s khc. Nu bn khng nhn thy ca s ca bn, chn Hide other t RandomApp . Bn s thy mt ca s trng rng, nh c hin th trong Hnh 2.5.

In Interface Builder m Reouuercces chn mt tp tin gi l MainMenu.nib. Double-click vo n m cc nib

trong giao din Builder (Hnh 2,7). Nhiu ca s s xut hin, v th ny l rt tn thi gian ca bn n cc ng dng khc. Trong giao din Builder interface, bn s tm thy Hide others

Giao din Builder cho php bn to v chnh sa giao din ngi s dng (v d nh, ca s v nt) v lu cc i tng vo mt tp tin. Bn cng c th to cc intances tu chnh ca cc class v thc hin cc kt ni gia cc instance vi giao din ngi dng Khi ngi dng tng tc vi cc i tng user interface, s lin kt m bn to gia chng v nhng class ca bn s pht ra on m thc thi The Library Window Th vin cc ca s l ni bn s tm thy iu khin giao din ngi s dng c th c ko vo giao din ca bn. V d, nu bn mun c mt nt, bn c th ko n t ca s Th vin. The Blank Window ca s trng i din cho mt lp hc NSWindow bn trong tp tin nib ca bn. Khi bn th cc i tng t cc th vin vo ca s, chng s c a vo cc tp tin nib. Lay Out the Interface Ti s hng dn bn, nhng hy nh rng mc tiu ca bn l to ra mt giao din ngi s dng trng ging hnh bn di

Ko mt nt t ca s Th vin (nh c hin th trong Hnh 2,9) v th n vo ca s trng. ( lm cho n d dng hn tm, bn c th chn Cocoa -> View&cell trong nhm u trang Th vin phn ca ca s.)

Double-click ln nut v i tn thanh "Seed random number generator using time". tng t vi "Generate random number" tip theo l ko th label gi nguyn khng cn thay i chnh trung tm ni dung ca n, bn s cn phi s dng Inspector. chn Attribute inspector t Tools menu. Bm vo nt center-justify

Create a Class trong Obj-C, mi class c xc nh bi hai file: files tiu (header) v file thc thi(implementation) . Tiu (header) tp tin, c bit n nh l giao din tp tin, khai bo ca cc bin v cc methods ca cc class s c. file thc thi (implementation) tp tin nh ngha nhng g cac methhods s lm.

Tr li Xcode, v s dng File-> New File to mt mc mi Cocoa ->Objective-C class. Tn tp tin Foo.m. trong phn add to project chon link ti project ca bn

Lm Quen Vi XCode Phn 2


Nhng tp tin Foo.h v Foo.m s xut hin trong project ca bn. Nu h khng xut hin trong Class, ko th n vo th mc Classes

trong Foo.h, bn s thm cc bin i tng v methods vo class cc bin i tng s c tr n nhng i tng khc c gi l outlets . Methods c th c kch hot bi giao din ngi s dng(user interface objects) ,i tng c gi s hot ng chn Foo.h click vo Editor tren dock sa Foo.h ging nh bn di #import <Cocoa/Cocoa.h> @interface Foo : NSObject { IBOutlet NSTextField *textField; } -(IBAction)seed: (id)sender; -(IBAction)generate: (id)sender; @end chng ta c 3 th t file ny 1.Foo l mt Subclass ca NSObject. 2. Foo c mt bin i tng: Textfield tr n i tng ca class NSTextField. 3.Foo c hai phng php(methods): seed, v generate: l hot ng ca methods. lu Foo.h Create an Instance Tip theo, bn s to ra mt class Foo trong tp tin nib ca bn. Quay tr li giao din Builder. t cc ca s Th vin, ko mt Object mu xanh (di Cocoa -> Object&controllers). Th n trong ca s ca doc ca bn

Trong Identity inspector, thit lp class Foo (Hnh 2.15). (actions v outlets ca bn nn xut hin trong Inspector. Nu khng thy, hy kim tra Foo.h. Bn c mt li trong n, hoc n khng c lu.)

Make Connections Hnh 2,16 l mt s i tng cho thy cc i tng cn phi c kt ni trong v d ca bn.

bn s t bin i tng Foo's Textfield tr n cc i tng NSTextField trn cc ca s hin nay l Label. Right-click (hoc Control-click neu bn s dng chut 1nut) vo biu tng i din ca bin i tng Foo ca bn n text filed. bng iu khin Inspector sau s xut hin. Ko t Textfield n Lable (Hnh 2.17).

Bc ny l v tt c cc im: Bn ch cn t tr Textfield trong i tng Foo ca bn tr n cc textfiled By gi bn s thit lp mc tiu ca nt seed tr outlet ca bn n i tng Foo. ngoi ra, bn mun nt kch hot method Foo's seed. ko th t nt n i tng Foo . Khi xut hin bng iu khin chn seed:

lm tng t vi generate button

Bn thc hin xong giao din Builder, nn lu cc tp tin v n cc ng dng. Quay tr li Xcode. Back in Xcode Nu y l ln u tin m bn nhn thy Object-c, bn c th khm ph rng n c v kh khc nhau t C + + hay Java code. C th c cc c php khc nhau, nhng nhng khi nim l cng. Java, v d, mt class s c khai bao nh th ny: import com.megacorp.Bar; import com.megacorp.Baz; public class Rex extends Bar implements Baz { ...methods and instance variables... } n th hin rng class Rex tha k t class Bar v thc hin methods c khai bo trong giao din Baz

Cc class tng t trong object-cs c khai bo nh th ny: #import <megacorp/Bar.h> #import <megacorp/Baz.h> @interface Rex : Bar <Baz> { ...instance variables... } ...methods... @end Nu bn bit Java, object-c thc s l nh vy khng l. Lu rng nh Java,object-c duy nht ch cho php tha k; c ngha l, mt class ch c mt superclass. Types and Constants in Objective-C Mc obj-c lp trnh s dng mt vi kiu m khng c tm thy trong th gii ca C. id l mt tr n bt c kiu i tng. BOOL cng ging nh char nhng c s dng nh l mt gi tr Boolean. YES is 1.

NO is 0. IBOutlet l mt macro m c lng khng c g. B qua n. (IBOutlet l hint giao din Builder khi c nhng khai bo ca mt class t mt tp tin.h.) IBAction cng ging nh void v vai tr nh l mt hint giao din Builder. nil cng ging nh NULL. Chng ti s dng nil thay v NULL cho n cc i tng. Look at the Header File Bm vo Foo.h. Nghin cu n mt lc. Foo khai bo n l mt Subclass ca NSObject. bin i tng c khai bo trong {}. #import <Cocoa/Cocoa.h> @interface Foo : NSObject { IBOutlet NSTextField *textField; }

- (IBAction)generate: (id)sender; - (IBAction)seed: (id)sender; @end #import l tng t vi nhng preprocessor ca C # include. Tuy nhin, #import m bo rng cc tp tin c bao gm ch mt ln. Bn ang import <Cocoa/Cocoa.h> bi v trong bao gm vic khai bo NSObject, l superclass ca Foo. Lu rng vic khai bo ca cc class bt u vi @ interface. @l biu tng khng c s dng tron ngn ng lp trnh C. gim thiu cc nhm ln gia C v obj-C t kha l @. Di y l mt s cc Objective-C keywords: @end, @implementation, @class, @selector, @protocol, @property, and @synthesize. nhn chung, bn s d dng hn tm thy code nhp vo nu m syntax-aware indention. Trong Xcode Preference, chn indentation pane. Kim tra hp c nhn Syntax-e indenting , nh c hin th trong Hnh 2,20.

Edit the Implementation File obj-c l mt ngn ng rt n gin. N khng c hin th t bit Tt c cc methods c public, v tt c bin i tng c bo v. (Trong thc t, c hin th t bit cho cc bin i tng, nhng chng him khi c s dng. Mc nh c bo v, v lm vic rt hon ho.) import "Foo.h"

@implementation Foo - (IBAction)generate: (id)sender { // Generate a number between 1 and 100 inclusive int generated; generated = (random() % 100) + 1; NSLog(@"generated = %d", generated); // Ask the text field to change what it is displaying [textField setIntValue:generated]; } - (IBAction)seed: (id)sender { // Seed the random number generator with the time srandom(time(NULL)); [textField setStringValue:@"Generator seeded"]; } @end (Nn nh rng IBAction cng ging nh void. )Bi v obj-C l C vi mt s m rng, bn c th gi function, chng hn nh random() v srandom(), t cc th vin tiu chun C v Unix. Trc khi bn xy dng v chy cc ng dng, bn c th mun chnh sa thm mt s chi tit Xcode . Trc tin, c mt log, thng gi l bn iu khin (console), ni m cc li ca bn s xut hin khi bn chy m ca bn. Bn s mun xa log sau khi chy. Th hai, bn s flip t tp tin .h tng ng tp tin .m mt nghn ln / ngy. Cha kha tng ng l Command-OptionUpArrow v bn s mun hai file xut hin trong cng mt ca s

Build and Run

Khi chy ng dng ca bn. Bm vo cc nt v xem thng s ngu nhin to ra. -Xin chc mng bn c mt ng dng lm vic Cocoa. awakeFromNib Thm methods awakeFromNib vo Foo.m. Bn s hiu r v sau. Ngn gn, bn ang to i tng ca NSCalendarDate i din cho thi im hin ti. Sau , bnni cho text field ci t cc gi tr lch ngy mi cho cc i tng - (void)awakeFromNib { NSCalendarDate *now; now = [NSCalendarDate calendarDate]; [textField setObjectValue:now]; } Theo th t cc methods , xut hin trong cc tp tin khng phi l quan trng. Ch cn chc chn rng bn thm chng sau @implementation v trc @end. Bn s khng bao gi gi awakeFromNib; n c gi t ng. n gin ch cn xy dng v chy cc ng dng ca bn mt ln na. By gi bn s thy trong ngy v thi gian khi app chy (Hnh 2,24).

You might also like