2010-06-17 40 views
13

Giả sử trong Apple API phiên bản 1.0, có một lớp NSFoo với thuộc tính 'màu'. API 1.1 thêm thuộc tính 'size'.cách bạn có thể tìm hiểu xem NSObject có thuộc tính nhất định không?

Tôi muốn biết liệu tôi có thể sử dụng phương thức getter: myFoo.size

[myFoo respondsToSelector: @selector (getSize)] không hoạt động như mong đợi.

Cách chính xác để tìm hiểu xem đối tượng có thuộc tính không? Cảm ơn!

Trả lời

36

Bạn thân thiết. Bộ chọn của bạn phải chính xác là thư bạn muốn gửi cho đối tượng:

if ([myFoo respondsToSelector:@selector(size)]) { 
    int size = [myFoo size]; // or myFoo.size in dot-notation. 
    // ... 
} 

sẽ hoạt động.

+5

Cần lưu ý rằng điều này là do các getters mặc định cho các thuộc tính bỏ qua tiền tố 'get'. Không giống như các setters có tiền tố 'set'. – Senseful

+0

Haha, oops. Cảm ơn! – strawtarget

+0

Làm cách nào để tôi thực hiện theo cách khác? Nếu tôi muốn đặt kích thước trên Foo? myFoo không biết thuộc tính lớp nên tôi không thể truy cập kích thước. –

Các vấn đề liên quan