2011-12-22 7 views

Trả lời

6

ivar (đầu tiên) là một biến đơn giản mà không thể được truy cập ra khỏi phạm vi của việc thực hiện giao diện được tạo ra (nếu chỉ thị @private được sử dụng) và không có phương thức truy cập tổng hợp.

Thuộc tính (thứ hai) là một Ivar bọc và cái gì mà lúc nào cũng có thể được truy cập thông qua instantiating một lớp và có phương pháp accessor tổng hợp (nếu @synthesize chỉ thị đang được sử dụng)

MyClass *class = [[MyClass alloc] init]; 
[class setMyString:@"someString"]; //generated setter 
NSString *classString = [class myString]; //generated getter 
+0

Trong trường hợp thứ hai tôi không nghĩ rằng getter/setter tổng hợp của myString có thể được truy cập bên ngoài phạm vi thực hiện. Lưu ý rằng chúng nằm trong phần mở rộng của lớp bên trong tệp triển khai. – SundayMonday

+0

Xin lỗi, tôi đã bỏ lỡ phần đó. Cái thứ hai được coi là trong một phần riêng tư (giống như API riêng tư của Apple giống như -recirsiveDescription của UIView). Nhưng chúng vẫn có thể được truy cập thông qua các phương thức accessor, mặc dù trình biên dịch sẽ tạo ra các cảnh báo. Người đầu tiên sẽ không thể truy cập được vì trình biên dịch sẽ tạo ra lỗi. – Eugene