@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% nội dung trên website này là nhờ hỏi ChatGPT, rồi mình biên tập lại để dễ hiểu và dùng lâu dài. Một vài bài tự viết, còn lại là “làm việc nhóm với AI”
Mình lưu tại đây để tra cứu, học tập và chia sẻ với bạn bè. Nếu bạn tìm được gì hữu ích, cứ đọc thoải mái – miễn phí, không quảng cáo.
Mình cũng có vài app cá nhân:
QuestionBank – Ôn thi vào 10 (iOS, Android)
TypingTest by QuestionBank (iOS, Android)
Cảm ơn bạn đã ghé qua!