Tôi tin rằng tôi hiểu các thuộc tính cho hầu hết các phần. Câu hỏi của tôi là, nếu tôi có một thuộc tính cho một biến mẫu và tôi đang thiết lập hoặc lấy nó từ bên trong một phương thức trong tệp triển khai của tôi, tôi có nên sử dụng self.myProperty
hoặc chỉ myProperty
không? Tôi biết một trong hai công trình, nhưng tôi đã thấy các công ước hỗn hợp, đôi khi mã truy cập trực tiếp biến và các lần khác thông qua tài sản.Tôi có nên sử dụng từ khóa tự (thuộc tính) trong quá trình triển khai không?
Có lý do kỹ thuật để thực hiện việc này không? Nó chỉ là quy ước/sở thích cá nhân? Và tôi không đề cập đến các trường hợp tên tham số của phương thức va chạm với tên biến mẫu, có thể là một lý do để sử dụng thuộc tính (Ít nhất, bằng các ngôn ngữ khác, tôi không biết về điều này). Tôi giả sử rằng khi sử dụng thuộc tính trong quá trình triển khai, họ muốn tận dụng cách thức mà họ tuyên bố thuộc tính (tức là nonatomic, giữ lại), ví dụ như phương pháp, có thể thực hiện:
self.myProperty = [someObject someAutoReleasedObject];
thay vì:
myProperty = [[someObject someAutoReleasedObject] retain];
đây có phải là lý do? Vì vậy, chỉ có những tình huống nhất định trong đó nó sẽ là tốt để sử dụng tài sản?
Tôi mới tham gia Objective-C và đây là một trong số ít điều khiến tôi bối rối. Cho đến nay tôi đã chỉ truy cập vào biến cá thể trực tiếp, theo giả định có khả năng sai nhất mà đi qua thuộc tính thực sự gọi/gửi một phương thức/thông điệp và thêm phí không cần thiết. Tôi khá chắc chắn tôi sai với điều này, nhưng ngay cả khi sự khác biệt trong chi phí là không đáng kể (Nếu có, ngay cả bất kỳ), tại sao một trong những lựa chọn để thêm nó trong khi người ta có thể chỉ đơn giản là trực tiếp truy cập vào biến?
Tôi khá chắc rằng mình đã sai trong suy nghĩ của mình, đó là lý do tôi hỏi tại đây.
Tôi không có dữ liệu để xác nhận điều này, nhưng theo tài liệu từ Apple:. "Trong phương pháp bạn có thể trực tiếp truy cập vào các biến thể hiện của trường hợp của lớp học của bạn Tuy nhiên, phương pháp truy cập được khuyến khích thay vì truy cập trực tiếp, ngoại trừ trong trường hợp hiệu suất là tối quan trọng. " Tham khảo: http://developer.apple.com/DOCUMENTATION/Cocoa/Conceptual/ObjCTutorial/10AppendixA/10AppendixA.html –
Ah được rồi, cảm ơn. Đó sẽ là tốt hơn như là một câu trả lời mặc dù. –
Quên thêm rằng nếu bạn đang phát triển Cocoa sử dụng KVO hoặc bindings, bạn nên sử dụng "self" thay vì truy cập trực tiếp vì Key-Value Observing và Cocoa Binding phụ thuộc vào phương thức accessor được gọi để đồng bộ hóa các cập nhật/thay đổi. –