Nếu tôi có một tài sản như thế này:Quản lý bộ nhớ có thể thay đổi thuộc tính nếu được định nghĩa lại trong một tiện ích mở rộng lớp không?
//test.h
@interface test
@property (nonatomic, readonly, weak) NSObject x;
@end
định nghĩa lại trong file thực thi để được đọc/ghi:
// test.m
@interface test()
@property (nonatomic, readwrite) NSObject x;
@end
Tôi đã từng yếu trong .h, nhưng tôi không nói gì trong phần mở rộng, liệu tài sản có giữ nguyên chỉ số 'yếu' hay nó sẽ chuyển thành 'mạnh'?
Từ khóa có mạnh/gán/yếu sẽ bị ghi đè khi thuộc tính được xác định lại không?
Thông thường, tôi luôn chỉ định thuộc tính 'strong/weak/assign' của thuộc tính trong tiện ích mở rộng lớp. Nó không cần thiết trong tuyên bố công khai chỉ đọc. – rmaddy
@rmaddy - Khai báo chỉ 'readonly' trong' .h' và 'readwrite, weak' trong phần mở rộng của lớp trong' .m' cho "Khai báo thuộc tính chính là hoàn toàn mạnh trong khi việc redeclaration trong phần mở rộng lớp là yếu" dưới Xcode 5.1 .1. Tuy nhiên, bao gồm 'strong' hoặc' assign' trong phần mở rộng không làm tăng ire của trình biên dịch. Trình biên dịch sau có thay đổi điều này không? – CRD
@CRD Hmmm. Tôi đoán tôi đã không làm điều đó với các thuộc tính 'yếu '. Tốt để biết. – rmaddy