@synthesize
và @property
là hai từ khóa quan trọng trong Objective-C, nhưng chúng có mục đích khác nhau.
- @property:
@property
được sử dụng để định nghĩa một thuộc tính trong một class.- Nó không tự động tạo getter và setter, nhưng chỉ làm cho chúng có sẵn để sử dụng.
- Bạn có thể chỉ định các thuộc tính như “readonly” hoặc “readwrite” để quyết định xem có getter và setter nào được tự động tạo hay không.
- Cú pháp:
@property (attributes) type propertyName;
Ví dụ:
@property (nonatomic, strong) NSString *name;
@synthesize:
@synthesize
được sử dụng để tự động tạo getter và setter cho một thuộc tính đã được định nghĩa bằng@property
.- Nếu bạn sử dụng
@property
mà không sử dụng@synthesize
, trình biên dịch sẽ tự động tạo getter và setter cho bạn. - Nếu bạn muốn kiểm soát tên của biến backing, bạn có thể sử dụng
@synthesize
để chỉ định tên của biến đó. - Cú pháp:
@synthesize propertyName = instanceVariableName;
Ví dụ:
@synthesize name = _name;
Trong những phiên bản mới của Objective-C và LLVM Compiler, việc sử dụng @synthesize
đã trở nên tùy chọn và không còn bắt buộc. Trình biên dịch sẽ tự động tạo getter và setter cho bạn nếu bạn chỉ sử dụng @property
mà không cần sử dụng @synthesize
.
Tóm lại, @property
dùng để khai báo một thuộc tính, trong khi @synthesize
được sử dụng để tạo ra getter và setter tương ứng cho thuộc tính đó.
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