Noi dung Giới thiệu về ObjecTive- -C Quy tắc đặt tên lớp, tên phương thức, †ên biến Class trong Objective-C Pham vi truy xuat cdc biến thể hiện Property trong Objective-C Phương thuc
Trang 1Lap trinh wng dung trén iOS
Objective-C
Trang 2Noi dung
Giới thiệu về ObjecTive- -C
Quy tắc đặt tên lớp, tên phương thức, †ên biến Class trong Objective-C
Pham vi truy xuat cdc biến thể hiện
Property trong Objective-C
Phương thuc trong Objective-C
Category trong Objective-C
Protocol trong Objective-C
Trang 3Gidi thiéu vé Objective-C
° Ngôn ngữ lập †rình hướng đối tượng
© ANSI C + Smalltalk = Objective-C
* Objective-C la ngon ngU lap trinh chính dugc Apple chon dé viét cac Ung dung
cho hé diéu hanh Mac OS, iOS
> Dễ dang nắm bắ† được ngôn ngữ
Objective-C nếu có "kinh nghiệm” vê €
Trang 4Quy tắc đặt tên
@interface MyClass : NSObject {
end
~ Bat dau bang ky tu hoa
© Method © -woia) finame;
Trang 5Class trong ÔbJecfiue-C
¢ @interface: Khai bdo class
* implementation: Dinh nghia class
© @end: Két †húc khai báo class hoặc két
thúc định nghĩa cÌlass
Trang 6
Pham vi truy xuat các biến
* @private: Gidi han pham vi trong lop ma biến thể hiện được khai bdo
* @protected (default): Gioi han pham vi
trong lớp và lớp con kế thừa mà biến thể
hiện được khai báo
»„ @public: Không giới hạn phạm vi †ruy
xuất
Trang 7Pham vi fruy xuất các biến (tt)
Trang 8Property trong Objective-C
¢ Property cho phép dinh nghia cac bd
truy xuat (setter/getter)
> Thuan loi cho viéc truy xuat dén cdc bién thé hién
¢ Dinh nghia trong file h
©property (<attributes>) type propertyName:
¢ Thuc thi trong file m
@synthesize propertyName;
Trang 9Property trong ODjective-C (tft)
¢ Cac thudc tinh (attributes)
— readwrite (default): doc va ghi (get/set)
— read-only: chi co thé doc (get)
— assign (default): Thường dùng với các kiểu
vô hướng như NSTn†eger, C6Floa†, CGrect
— retain: Thuong được sử dụng cho đối †tượng
— copy: Tạo một bản sao của đối tudng sé
được sử dụng cho đối †ượng chỉ định
— atomic (default): Thực hiện đồng bộ hoá
— nona†omic: Ngược với a†omic
Trang 10Property trong ODjective-C (tft)
¢ Cac thudc tinh (attributes)
Trang 11Property trong ODjective-C (tft)
Các thu6éc tinh (attributes)
Trang 12Phuong thurc trong Objective-C
Class method
— Ky hiéu dau +
— Truy xuat thong qua tén lớp
— Khong thé †ruy cập vào các biến thể hiện
Trang 13Phuong thuc trong Objective-C (tft)
° Khai báo phương thức:
-/+ (re†urn_ †ype) me†hod;
-/+ (return_type) methodParal : (type) paral;
-/+ (return_type) methodParal : (type) paral andPara2: (type) para2;
° GỌI phương thức:
// Class method
MyClass *myClass = [MyClass method];
// Instance method
[ob ject method];
[ob ject methodParal:pat];
[object methodParal:pal andPara2:pa2];
Trang 14
Category trong Objective-C
* Khi muon thém mot so phuOong thức vào
mỘT lớp có săn
- Mở rộng lớp đó bằng cách viết lại mã nguồn
— Mở rộng lớp đó không cần viết lại mã nguồn
Trang 15Category trong ODjective-C (tft)
° Thểm mộ† phương †hức newMethod cho lớp MyClass thong qua Category
Chú ý: - Tên của Category là duy nhất (Không được trùng)
- Trong Category không cho phép thêm các biên thể hiện
Trang 16Procol trong ObJecfiue-C
¢ Protocol la gi ?
¢ Vi du:
@protocol MyProtocol // required (default)
Trang 17Kế thừa
Person
J
° Tương †ự như các ngôn ngữ khác Teacher
° Trong Objective-C, roo† class cua tat ca
Trang 18NSFileManager *fileManager = [NSFileManager defaultManager] ;
if (![fiLeManager fileExistsAtPath: [[[NSBundle mainBundle]
resourcePath] stringByAppendingPathComponent:@"abc.txt"]]) {
@throw [NSException exceptionWithName:@"Error!!!" reason:
@"This file doesn't exist" userInfo:nil];
cancelButtonTitle:nil otherButtonTitles:@"0K", nil] autorelease
Trang 19Một số cấu truc điều khiển
Trang 21Quản lớ bộ nhớ
* Cdc nguyén tac quan ly bd nho
— Nguyén tac can ban
°- Khi bạn năm quyền sở hữu một† đối tượng, khởi †ao đối tượng bằng
các phuong thuc ma trong tén bat dau voi voi alloc hoặc new hoặc
Copy (ví dụ, alloc, newObjec† hoặc mu†ableCopy ) hoặc gửi một - thong điệp retain, ban phai có trach nhiệm giải phóng quyên sở hữu
doi tượng đó băng cách sử dụng release hoac autorelease Bat ky
khi nào bạn nhận được mộ† đôi †ượng (không phải †ự mình khởi tao),
bạn không được releose nó
— Nguyễn †ắc khác
°- Khi bạn cân lưu trữ một đối tượng được nhận như mộ† Sea
†rong một biên thể hiện, bạn phải re†ain hoặc copy nó (Điêu này không đúng cho cho tham khảo yếu, nhưng đây là điển hình hiểm)
°- Một đối tượng được nhận thường đảm bảo vân có hiệu lực trong
phương thức mà nó đã được nhận (ngoại †rừ bi bà bánh Ung da luông
va vai truong hop Distributes Objects) Phuong thuc do co thé tra
vê an †oản đôi tượng mỏ nó được Triệu gọi Sử dụng re†ain trong
việc kế† hợp với release hoặc qu†oreÌease khi cân thiét dé bao vệ một đối tượng khỏi hiệu lực của các thông điệp không hợp lệ bền
ngoài
° qu†orelease có nghĩa là “gui mot thong diép release sau đó
Trang 22Quản lý bộ nhớ
° Vấn đê khi khởi †ạo đối tượng
MyClass *myClass = [MyClass alloc];
[myClass init];
if(myClass) {
hi
Trang 23Quản IV bộ nhớ
° Vấn đê khi khởi †ạo đối tượng (††)
MyClass *myClass = [[MyClass alloc] init];
if(myClass) {
Haws
}
Chú ý: - Luôn luôn trả về nil trong phương thức init nếu có lỗi xảy ra
- Phải kết hợp 02 lời gọi phương thức alloc va init
Trang 24
Quản lớ bộ nhớ
¢ Release
— Chi dugc release khi khdi tao déi tượng
mot cach thu cong alloc
~ KHONG release thu céng mat déi tuong
autorelease > CRASH
// Must release string1 when done
NSString *string1 = [[NSString alloc] init];
Trang 252 cá nN V4
Quản lý bộ nhớ
AKON G'
- Mỗi đối tượng có mộ† bộ đếm được sử dụng để kiểm
soát †ất cả các tham chiếu bởi đối tượng hoặc nó có
— Phuong thuc alloc, new, copy va retain đêu làm †ăng
bộ đếm lên 1
— Phuong thuc release giam b6 dém di 1
- Khi bộ đếm có giá †rị bằng O > Phuong thtic dealloc
của đối tượng sẽ được gọi
- Để xác định giá †rị cua b6 dém: [object retainCount]
Trang 26- Nếu một lớp có các biến thể hiện (instance
variable) là các đối tượng thì †rong phương
†hức dealloc của lớp phải thực hiện giải
phóng các biến thể hiện này
Trang 27Quản lớ bộ nhớ
* Tham chiéu yéu
— Tao tham chiéu dén d6éi tugng ma khong can
tro déi tudng †ự giải phóng chính nó >
ThiếT lập tham chiếu ˆyếu” đến đối tượng
Trang 28Selector trong Objective-C
¢ Selector trong Objective-C co 02 y
nghia:
— Chi dén tén clla mOt phuong thuc khi nó
được sử dụng †rong mã nguôn mộT thông
điệp gởi đến một đối tượng
- Chỉ đến một định danh duy nhất mà †hay †hế
cho mộ† †ên khi mã nguồn được biên dịch