Theo như tôi hiểu @property khai báo getter và setter trong tệp .h và @synthesize thực hiện getter và setter trong các tệp .m. Hơn nữa, bạn có thể viết thực hiện của riêng bạn cho getter và setter thay vì sử dụng @synthesize.Mục tiêu-C: Tuyên bố @property mà không cần triển khai (@synthesize)
Vì vậy, nếu chúng ta luôn cần triển khai setter/getter tại sao chúng ta cần phải khai báo bổ sung? @property dường như là dự phòng ngữ nghĩa đối với tôi và một nguồn cho lỗi.
Điều gì sẽ xảy ra khi tôi khai báo @property nhưng quên triển khai bằng @synthesize hoặc thủ công? Điều gì sẽ xảy ra khi tôi sử dụng @synthesize và quên tuyên bố @property?
tốt đẹp mà họ đã thêm điều này. Cảm ơn bạn đã trả lời –
Vẫn còn một trường hợp bạn sẽ cần sử dụng cả thuộc tính và tổng hợp lại với nhau. Trình biên dịch sẽ sử dụng tên thuộc tính cộng với tiền tố gạch dưới để tạo ra ngà voi. Nếu _propertyname ivar va chạm với một biến cá thể riêng, bạn sẽ cần phải tổng hợp nó thành một thanh công cụ mới. Ví dụ: nếu bạn đang phân lớp UIToolbar và khai báo một thuộc tính đặt tên nó là delegate, bạn sẽ gặp lỗi khi cố gắng sử dụng ivar _delegate vì UIToolbar chứa một biến cá thể riêng id _delegate. Bạn có thể giải quyết điều này bằng cách sử dụng '@synthesize delegate = _mydelegate;'. – lolol