Tôi muốn thêm một tài sản để UITableView trong một Extension Class:Xác định một tài sản trong công tác khuyến lớp iOS
@interface UITableViewController()
@property NSString *entityString;
@end
Sau đó, tôi nhập phần mở rộng và sau đó tôi sử dụng tài sản entityString trong một lớp con của UITableViewController:
@implementation CustomerTableViewController
- (void)viewDidLoad {
self.entityString = @"Customer";
...
[super viewDidLoad];
}
...
Apple documentation nói:
the compiler will automatically synthesize the relevant accessor methods (...) inside the primary class implementation.
Nhưng khi tôi cố gắng cũ ecute it Tôi nhận được lỗi này:
-[CustomerTableViewController setEntityString:]: unrecognized selector sent to instance 0x737b670
Tôi đang làm gì sai? có thể thuộc tính không thể được truy cập bởi các lớp con?
Không thể thêm ivars vào phần mở rộng của lớp học hoặc điều này phụ thuộc vào trình biên dịch được sử dụng? – tiguero
Bạn có thể khai báo ivars và các thuộc tính trong các phần mở rộng của lớp, nhưng lưu trữ cho nó sẽ không được tạo trừ khi phần mở rộng được trình biên dịch nhìn thấy trước khi biên dịch @implementation của lớp đó. – bbum
Cảm ơn bạn đã làm rõ - tôi đã không nhận thấy alazaro đang sử dụng một lớp mở rộng cho một lớp khung thực sự – tiguero