MVDS 'जवाब पर विस्तार करने के लिए, यहाँ एक छोटे से नमूना कार्यक्रम के माध्यम से पाश के लिए ऑब्जेक्टिव-सी क्रम एपीआई का उपयोग करता है है (इससे पहले कि मैं उसकी देखा यह लिखना शुरू किया) और एक कक्षा में प्रत्येक संपत्ति के बारे में प्रिंट जानकारी:
#import <Foundation/Foundation.h>
#import <objc/runtime.h>
@interface TestClass : NSObject
@property (nonatomic, retain) NSString *firstName;
@property (nonatomic, retain) NSString *lastName;
@property (nonatomic) NSInteger *age;
@end
@implementation TestClass
@synthesize firstName;
@synthesize lastName;
@synthesize age;
@end
int main(int argc, char *argv[]) {
@autoreleasepool {
unsigned int numberOfProperties = 0;
objc_property_t *propertyArray = class_copyPropertyList([TestClass class], &numberOfProperties);
for (NSUInteger i = 0; i < numberOfProperties; i++)
{
objc_property_t property = propertyArray[i];
NSString *name = [[NSString alloc] initWithUTF8String:property_getName(property)];
NSString *attributesString = [[NSString alloc] initWithUTF8String:property_getAttributes(property)];
NSLog(@"Property %@ attributes: %@", name, attributesString);
}
free(propertyArray);
}
}
आउटपुट:
संपत्ति की आयु जिम्मेदार बताते हैं: टी^q, Vage
संपत्ति lastName जिम्मेदार बताते हैं: टी @ "NSString", &, एन, VlastName
संपत्ति firstName जिम्मेदार बताते हैं: टी @ "NSString", &, एन, VfirstName
ध्यान दें कि यह कार्यक्रम एआरसी के साथ संकलित करने की आवश्यकता है कामोत्तेजित।
स्रोत
2012-02-13 23:20:14
एक अच्छा अनुवर्ती प्रश्न यह होगा कि प्रत्येक गतिशील रूप से मूल्यों को कैसे वापस किया जाए ... मैं गतिशील रूप से एक एक्सेसर बनाने की सोच रहा हूं, लेकिन वाक्य रचनात्मक रूप से, मैं अभी भी इसे समझने की कोशिश कर रहा हूं। –
कुछ तरीके हैं जो आप कर सकते हैं, लेकिन सबसे सरल सीवीसी का उपयोग करना होगा: 'id value = [self valueForKey: @" propertyName "]'। थोड़ा और जटिल हो जाता है जहां आपके पास आदिम (int, float, आदि) और ऑब्जेक्ट (एनएसएसटींग, आदि) दोनों प्रकार के रिटर्न प्रकार होते हैं, लेकिन बुनियादी आधार काम करेगा। –
यह कोड नरक की तरह लीक – mvds