Tôi chưa có đặc quyền nhận xét, nhưng để thêm vào câu trả lời của @ Costique, có thêm thuộc tính Loại giá trị "V" là tên của IVar mà tài sản có thể bị ràng buộc (thông qua tổng hợp). Điều này có thể dễ dàng phát hiện ra với điều này
@ interface Redacted: NSObject
@property (nguyên tử, chỉ đọc) int foo;
@end
@implementation Redacted
@synthesize foo = foobar;
@end
// for all properties
unsigned propertyCount = 0;
objc_property_t *properties = class_copyPropertyList([object class], &propertyCount);
for (int prop = 0; prop < propertyCount; prop++)
{
// for all property attributes
unsigned int attributeCount = 0;
objc_property_attribute_t* attributes = property_copyAttributeList(property, &attributeCount);
for (unsigned int attr = 0; attr < attributeCount; attr++)
{
NSLog(@"Attribute %d: name: %s, value: %s", attr, attributes[attr].name, attributes[attr].value);
}
}
2013-07-08 13: 47: 16,600 Redacted5162: 303] Thuộc tính 0: Tên: T, giá trị: i
2013-07-08 13 : 47: 16.601 Đã chỉnh sửa [5162: 303] Thuộc tính 1: tên: R, giá trị:
2013-07-08 13:47:16.602 Redacted [5162: 303] Thuộc tính 2: tên: V, giá trị: fooBar
Nguồn
2013-07-08 21:00:14
Một ý tưởng đáng ngưỡng mộ, nhưng xuống con đường đó nằm điên rồ. Bạn sẽ phát minh lại bánh xe (Dữ liệu cốt lõi đã cung cấp sự kiên trì dựa trên mô hình xuất sắc) và hệ thống thuộc tính * không * được thiết kế làm cơ sở cho bất kỳ loại độ bền tự động nào. Kết quả cuối cùng sẽ cực kỳ mong manh và sẽ là một nỗi đau hoàn toàn để viết ở nơi đầu tiên, với những thay đổi bất thường của các kiểu dữ liệu C. – bbum
Mặc dù upvote của tôi về "tài sản xin vui lòng" câu trả lời dưới đây ... Đây là khi bạn cần phải đi học Core Data. Nghiêm túc, nó sẽ có giá trị nó. Nó không phải dành cho người mới bắt đầu mà là IMO khi bạn bắt đầu thực hiện các công cụ như hack thời gian chạy objc, đó là lúc để đọc những tài liệu lạ đó và làm cho đầu của bạn làm việc đúng cách. :) – buildsucceeded
@buildsucceeded Tôi biết cách sử dụng dữ liệu cốt lõi. Đó là một giải pháp tuyệt vời khi nói đến một dự án có kích thước trung bình/lớn yêu cầu dữ liệu quan hệ. Nhưng khi nói đến một dự án thực sự nhỏ, nơi mà tất cả những gì tôi cần để sắp xếp một đối tượng duy nhất để giữ trạng thái của ứng dụng, đó là một sự tiêu diệt quá mức để sử dụng dữ liệu lõi. Thêm vào đó, tôi đã sử dụng giải pháp này cho các mục đích khác như Object-To-Dictionary-Serialization và DI Framework – aryaxt