Gần đây tôi đã cố gắng biên dịch một dự án Xcode cũ hơn (được sử dụng để biên dịch tốt) và bây giờ tôi thấy rất nhiều lỗi của biểu mẫu này:
error: writable atomic property 'someProperty' cannot pair a synthesized setter/getter with a user defined setter/getter
Mẫu mã gây ra các lỗi này luôn trông như thế này:
// Interface:
@property (retain) NSObject * someProperty;
// Implementation:
@synthesize someProperty; // to provide the getter
- (void)setSomeProperty:(NSObject *)newValue
{
//..
}
Tôi có thể thấy tại sao lỗi được tạo ra. Tôi nói với trình biên dịch tổng hợp các bộ truy cập thuộc tính của tôi (cả getter và setter), và sau đó ngay lập tức sau đó tôi ghi đè setter bằng tay. Mã đó luôn luôn có một chút mùi.
Vì vậy, cách thích hợp để làm điều này là gì? Nếu tôi sử dụng @dynamic
thay vì @synthesize
, tôi cũng sẽ phải viết getter. Có phải đó là cách duy nhất?
atomic
tài sản? Trong trường hợp thuộc tính nguyên tử, có thể nên giữ cặp getter / setter đồng bộ với chiến lược khóa. Điều này là khó khăn nếu một phần được tổng hợp trong khi phần kia là mã tùy chỉnh.