在没有bundle的文档时,用runtime预览bundle里边都有哪些API:
#import <Foundation/Foundation.h>
#import <objc/runtime.h>
#import <Cocoa/Cocoa.h>
int main(int argc, const char * argv[]) {
@autoreleasepool {
// insert code here...
NSLog(@"Hello, World!");
NSBundle *bundleObject;
NSString *bundlePath = @"/path/to/bundle/name.bundle";
bundleObject = [NSBundle bundleWithPath:bundlePath];
Class aClass = [bundleObject principalClass];
id anInstance = [[aClass alloc] init];
NSLog(@"%@",anInstance);
// 获取对象的所有属性
NSLog(@"all Properties:");
u_int count = 0;
objc_property_t *properties = class_copyPropertyList(aClass, &count);
for (int i = 0; i < count; i++){
const char *propertyName = property_getName(properties[i]);
NSLog(@"%@",[NSString stringWithUTF8String:propertyName]);
}
free(properties);
//获取对象的所有方法
NSLog(@"all Methods:");
unsigned int methodCount = 0;
Method *methodList = class_copyMethodList([anInstance class], &methodCount);
for (int i = 0; i < methodCount; i++) {
Method temp = methodList[i];
SEL name_F = method_getName(temp);
const char *name_s = sel_getName(name_F);
int arguments = method_getNumberOfArguments(temp);
const char * encoding = method_getTypeEncoding(temp);
NSLog(@"MethodName: %@,ArgumentCount: %d,EncodingStyle: %@",[NSString stringWithUTF8String:name_s],arguments,[NSString stringWithUTF8String:encoding]);
}
free(methodList);
}
return 0;
}
本文介绍了一种在缺少bundle文件的情况下使用runtime来预览bundle中包含的所有API的方法。通过Objective-C运行时API,可以获取bundle中类的所有属性和方法。

8271

被折叠的 条评论
为什么被折叠?



