Tôi muốn tạo ra một phương pháp như thế này:Mục tiêu-c: con trỏ kép cho thuộc tính không được phép?
- (void) checkAndUpdateStringProperty: (NSString **) property{
if (...)
*property = @"whatever";
}
Tôi muốn sử dụng để vượt qua trong một tài sản cho cùng lớp:
- (void) somewhereElse{
....
[self checkAndUpdateStringProperty: &self.productName];
}
Nhưng điều này mang lại một lỗi cú pháp, nói rằng "Địa chỉ của biểu thức thuộc tính được yêu cầu ". Có lý do gì không? Nếu tôi thay thế các tài sản lớp với một biến địa phương, nó hoạt động tốt:
- (void) somewhereElse{
NSString *name = nil;
[self checkAndUpdateStringProperty: &name];
}
Ngoại lệ để truy cập trực tiếp các thuộc tính của ivars trong 'init' và' dealloc' trong đó lớp không ở dạng hoàn chỉnh và bất kỳ tác dụng phụ nào cũng có thể gây ra vấn đề. – zaph
Điểm tốt, được cập nhật. –
Cảm ơn. Trên thực tế đã tìm ra rằng (vì đây là một NSManagedObject), tôi có thể chuyển vào tên của thuộc tính và truy cập giá trị bằng cách sử dụng valueForKey, và đặt nó bên trong phương thức 'check' bằng cách sử dụng setValue: forKey: Không cần phải thực hiện phép đo hai con trỏ . –