Hoặc, cụ thể hơn, (chỉ đọc, giữ lại) cho phép một mô hình như thế này:
foo.h:
@interface StuffHolder:NSObject
@property(readonly, retain) MyStuff *stuff;
@end
Foo.m:
@interface StuffHolder()
@property(readwrite, retain) MyStuff *stuff;
@end
@implementation StuffHolder
@synthesize stuff;
@end
Kết quả cuối cùng là một tài sản được công khai chỉ đọc trong khi được ghi đè trong thực hiện và cho cả hai setter và getter được tổng hợp tự động bởi trình biên dịch.
Phạt cảnh cáo thể được tạo ra trong trường hợp không có (đọc-ghi, giữ lại) override trong phần mở rộng lớp - một cái gì đó giống như statement without an effect
- nhưng nó sẽ gây lộn xộn hơn có lợi. Ngoài ra còn có một loạt các trường hợp cạnh khác nhau trên các kết hợp mà sẽ bảo đảm một cảnh báo, nhưng không thực sự chỉ ra một vấn đề thực tế. Quyết định đã được thực hiện để chấp nhận phần lớn các mô hình khác nhau mà không có khiếu nại vì lợi ích của sự đơn giản (vì chúng không phải là vấn đề chính xác).
Nó không hoàn toàn ngớ ngẩn; ma trận của modifier so với @synthesize là mã của getter ** có thể ** thay đổi. Đang cố gắng giải thích chính xác những công cụ sửa đổi nào sẽ có thể được thêm vào so với #warn sẽ rạn nứt với minutia và khó có thể hiểu được. Tốt hơn là chỉ cần đi với "phải giống nhau ngoại trừ readonly-> readwrite". – bbum
Hình tôi nên mở rộng trên nhận xét của tôi .... – bbum