Objecitve-C的重要特性是Runtime(運(yùn)行時),在Interacting with the Runtime(交互運(yùn)行)中,,運(yùn)行時函數(shù)部分,,蘋果給出了/usr/lib/libobjc.A.dylib庫,這個共享庫提供支持動態(tài)屬性的objective - c語言,,通過其接口,,可以用于開發(fā)將其他語言運(yùn)行于Objective-C上的中間層(橋接層),庫里的函數(shù)定義為純C語言。 例如:class_getName class_getName Returns the name of a class. const char * class_getName(Class cls) Parameters cls A class object. Return Value The name of the class, or the empty string if cls is Nil. Declared In runtime.h 這里我們要用庫里的函數(shù),,干個“壞事”,,查看蘋果SDK的私有方法。 第一步:導(dǎo)入頭文件 #import <objc/runtime.h>第二步:添加下列代碼 NSString *className = NSStringFromClass([UIView class]); const char *cClassName = [className UTF8String]; id theClass = objc_getClass(cClassName); unsigned int outCount; Method *m = class_copyMethodList(theClass,&outCount); NSLog(@"%d",outCount); for (int i = 0; i<outCount; i++) { SEL a = method_getName(*(m+i)); NSString *sn = NSStringFromSelector(a); NSLog(@"%@",sn); } 第三步:想看什么類 就把UIView換成你想要的
當(dāng)然,,如果只是查看私有API,,會有更簡單的方法,可以使用工具class-dump,,也可以通過此鏈接,,https://github.com/kennytm/iphone-private-frameworks/tree/master/UIKit/ 查看。 特別注意的是,,如果是需要上架的APP,切勿使用私有API,,會通不過APP Store的審核,。
iOS開發(fā)群,大家做技術(shù)交流和資源,,群號:241048287 |
|