@property
là một từ khóa quan trọng trong Objective-C được sử dụng để định nghĩa thuộc tính của một đối tượng. Nó đơn giản hóa việc tạo getter và setter cho biến thành viên của một lớp. Dưới đây là một tổng quan về @property
:
Mục Lục
Khai Báo Cơ Bản:
@property (attributes) type name;
attributes
: Là các thuộc tính và quy tắc của thuộc tính nhưnonatomic
,strong
,weak
,readonly
, và nhiều thuộc tính khác.type
: Là kiểu dữ liệu của thuộc tính.name
: Là tên của thuộc tính.
Một Số Thuộc Tính Phổ Biến:
- atomic:
- Mặc định. Đảm bảo rằng getter và setter là an toàn khi truy cập từ nhiều luồng. Tuy nhiên, có thể làm chậm ứng dụng do việc đồng bộ hóa.
@property (atomic) NSString *name;
nonatomic:
- Không đảm bảo an toàn khi truy cập từ nhiều luồng. Tăng hiệu suất bằng cách không sử dụng các mekanism đồng bộ hóa.
@property (nonatomic) NSInteger age;
strong (hoặc retain):
- Sử dụng cho các thuộc tính con trỏ đến các đối tượng. Tăng retain count của đối tượng.
@property (strong) NSArray *dataArray;
weak:
- Sử dụng cho các thuộc tính con trỏ đến các đối tượng. Không tăng retain count của đối tượng, tránh việc tạo ra retain cycle.
@property (weak) UIViewController *viewController;
readonly:
- Chỉ định rằng chỉ có getter được tạo ra và không có setter. Giá trị chỉ có thể được thiết lập trong phương thức khởi tạo hoặc trong nội dung của lớp.
@property (readonly) BOOL isActive;
readwrite:
- Mặc định. Tạo ra cả getter và setter cho thuộc tính.
@property (readwrite) NSString *message;
assign:
- Sử dụng cho các thuộc tính không phải là đối tượng, như các kiểu cơ bản (int, float).
@property (assign) NSInteger count;
copy:
- Tạo ra một bản sao của đối tượng khi được gán giá trị mới. Thích hợp cho chuỗi và các lớp có khả năng thay đổi (mutable).
@property (copy) NSString *title;
Sử Dụng @property
Trong @interface
:
@interface MyClass : NSObject
@property (nonatomic, strong) NSString *name;
@property (nonatomic, assign) NSInteger age;
@end
Trong ví dụ trên, MyClass
có hai thuộc tính là name
và age
, mỗi thuộc tính đều có các thuộc tính và kiểu dữ liệu của nó. Compiler sẽ tự động tạo ra các getter và setter tương ứng.
Xin chào,
Bài viết này sử dụng AI ChatGPT để viết sau đó được lựa chọn, biên tập lại nội dung, chỉ một phần nhỏ các bài là tôi tự viết. Nội dung thể hiện ý chí cá nhân về các vấn đề, giải pháp. Tôi lưu tại website này để học, tra cứu và chia sẻ.
Tôi là Minh, sống tại Hà Nội, kỹ sư phần mềm với hơn 20 năm kinh nghiệm. Các ngôn ngữ yêu thích của tôi là Swift, Objective-C, Java, Kotlin, .NET, HTML, JavaScript, CSS, Bootstrap, jQuery, AngularJS, Angular…
Các bạn có thể tải app của tôi trên App Store hoặc Google Play:
QuestionBank-Ôn thi vào 10: phiên bản iOS, phiên bản Android
TypingTest by QuestionBank: phiên bản iOS, phiên bản Android
Xin cảm ơn,
Minh