@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 các bạn!
Bài viết này dùng AI ChatGPT viết sau đó được tôi chọn lựa, 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í mang tính cá nhân về các vấn đề của tôi và giải pháp. Tôi lưu tại website này để tra cứu và chia sẻ cho cộng đồng. Tôi tin rằng nội dung này giải quyết vấn đề của tôi thì cũng giải quyết vấn đề của các bạn.
Tôi là Minh, sống tại Hà Nội. Tôi là kỹ sư phần mềm với hơn 20 năm kinh nghiệm. Hiện nay, công việc chính của tôi là phát triển các app trên iOS và Android. Các ngôn ngữ và framework 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