@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,
99,99% bài viết tại website là kết quả của khai thác dữ liệu từ AI ChatGPT sau đó được lựa chọn, biên tập lại nội dung, chỉ vài bài là không dùng AI. Tôi lưu tại website này để tra cứu khi cần, để học và để chia sẻ cho bạn bè tôi. Nếu bạn tìm thấy nội dung nào đó khi tìm kiếm thì cứ đọc thoải mái, nó miễn phí, không quảng cáo.
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