Professional Documents
Culture Documents
Objective-C
Ni dung
Gii thiu v Objective-C Quy tc t tn lp, tn phng thc, tn bin Class trong Objective-C Phm vi truy xut cc bin th hin Property trong Objective-C Phng thc trong Objective-C Category trong Objective-C Protocol trong Objective-C K tha X l ngoi l Mt s cu trc iu khin trong Objective-C Qun l b nh Selector trong Objective-C
Quy tc t tn
Class Method Variable
- (void) findMe;
Bt u bng k t hoa
Bt u bng k t thng
NSString *stringURL;
Ging method
MyClass.h @interface MyClass : NSObject{ NSString *stringURL; } - (void) findMe; @end
Instance method
K hiu du Truy xut thng qua i tng
Gi phng thc:
// Class method MyClass *myClass = [MyClass method]; // Instance method [object method]; [object methodPara1:pa1]; [object methodPara1:pa1 andPara2:pa2];
@protocol MyProtocol // required (default) - (void) requiredMethod; @optional - (void) anOptionalMethod; - (void) anotherOptionalMethod; @required - (void) anotherRequiredMethod; @end
Person
K tha
Tng t nh cc ngn ng khc Teacher Trong Objective-C, root class ca tt c cc class l NSObject
Person.h @interface Person : NSObject { NSString *name; NSString *birthday; } // @end Teacher.h @interface Teacher : Person{ float fSalary; } // @end
X l ngoi l
Mt s cu trc iu khin
If For Switch While
Qun l b nh
Cc nguyn tc qun l b nh Vn khi khi to i tng Release Retain Dealloc Tham chiu yu
Qun l b nh
Cc nguyn tc qun l b nh
Nguyn tc cn bn
Khi bn nm quyn s hu mt i tng, khi to i tng bng cc phng thc m trong tn bt u vi vi alloc hoc new hoc copy (v d, alloc, newObject hoc mutableCopy) hoc gi mt thng ip retain, bn phi c trch nhim gii phng quyn s hu i tng bng cch s dng release hoc autorelease. Bt k khi no bn nhn c mt i tng (khng phi t mnh khi to), bn khng c release n. Khi bn cn lu tr mt i tng c nhn nh mt property trong mt bin th hin, bn phi retain hoc copy n. (iu ny khng ng cho cho tham kho yu, nhng y l in hnh him). Mt i tng c nhn thng m bo vn c hiu lc trong phng thc m n c nhn (ngoi tr trong cc ng a lung v vi trng hp Distributes Objects). Phng thc c th tr v an ton i tng m n c triu gi. S dng retain trong vic kt hp vi release hoc autorelease khi cn thit bo v mt i tng khi hiu lc ca cc thng ip khng hp l bn ngoi. autorelease c ngha l gi mt thng ip release sau
Nguyn tc khc
Qun l b nh
Vn khi khi to i tng
MyClass *myClass = [MyClass alloc]; [myClass init]; if(myClass) { // }
???
Qun l b nh
Vn khi khi to i tng (tt)
MyClass *myClass = [[MyClass alloc] init]; if(myClass) { // }
OK
Ch : - Lun lun tr v nil trong phng thc init nu c li xy ra - Phi kt hp 02 li gi phng thc alloc v init
Qun l b nh
Release
Ch c release khi khi to i tng mt cch th cng alloc KHNG release th cng mt i tng autorelease --> CRASH
// Must release string1 when done NSString *string1 = [[NSString alloc] init]; // [string1 release];
Autorelease
release
Qun l b nh
Retain
Mi i tng c mt b m c s dng kim sot tt c cc tham chiu bi i tng hoc n c Phng thc alloc, new, copy v retain u lm tng b m ln 1 Phng thc release gim b m i 1 Khi b m c gi tr bng 0 --> Phng thc dealloc ca i tng s c gi xc nh gi tr ca b m: [object retainCount]
Qun l b nh
Dealloc
c gi khi i tng ang c remove khi b nh Nu mt lp c cc bin th hin (instance variable) l cc i tng th trong phng thc dealloc ca lp phi thc hin giii phng cc bin th hin ny
- (void) dealloc { [childVar1 release]; [childVar2 release]; // [super dealloc]; }
Qun l b nh
Tham chiu yu
To tham chiu n i tng m khng cn tr i tng t gii phng chnh n --> Thit lp tham chiu yu n i tng