Việc đóng gói dữ liệu trong Mục tiêu-C có nghĩa là chỉ chính lớp đó sẽ chạm vào các biến mẫu của nó. Do đó bạn phải luôn đánh dấu chúng là riêng tư và chỉ hiển thị chúng thông qua các thuộc tính, như sau:
@interface Foo : NSObject {
@private
int numberOfBars;
Baz* contentBaz;
}
@property(nonatamic, assign) int numberOfBars;
@property(nonatomic, retain) Baz* contentBaz;
@end
Điều này có nghĩa là lớp có thể thực hiện xác thực trong phương thức setter của nó. Và thậm chí tốt hơn nếu bạn sử dụng @synthesize
để tạo ra getter và setters của bạn hơn bạn thậm chí không cần phải lo lắng về mô hình bộ nhớ của Cocoa ở tất cả (ngoại trừ việc phát hành ivars của bạn trong dealloc).
Tại sao lại có các phiếu bầu? – CesarGon
FWIW: Việc đóng gói dữ liệu không theo cách cụ thể đối với mục tiêu C, hay thậm chí là lập trình hướng đối tượng, thay vào đó là một kỹ thuật rất chung để kiểm soát một lớp phức tạp trong hầu hết mọi môi trường lập trình. – dmckee
Tôi đồng ý rằng điều này (đóng gói) là kém "giải thích". Đối với một số lý do, hầu như mọi thứ trong mục tiêu C là "như thế" .. Tất cả các khái niệm đều dễ thương, trừu tượng, bán liên quan, tiếng anh "tên" .. thật không may là hoàn toàn không có ý nghĩa với nhau… ĐỂ bạn hiểu ... Sau đó, một công tắc flips, và tất cả mọi người mà không nhận được nó có vẻ câm. Tôi thề ... cách họ đã tóm tắt các khái niệm là đúng ở rìa của những gì _normal_ mọi người có thể hiểu .. đến điểm mà một khi bạn làm được nó ..bạn gần như sợ phải quay lại và cố gắng giải thích nó, lol. –