关于苹果私有API的使用

自xcode7开始苹果将一些静态库转成了.tbd格式,根据苹果员工的解释,之所以转成.tbd格式,是要提供更加紧凑的静态库,更重要的是减少下载包的大小,(https://forums.developer.apple.com/message/9176#9176)。表面上似乎确实是这样,但是去看看private frameworks后就瞬间明白了。所有的private frameworks都被改成了.tbd文件,头文件是做什么用的呢?头文件其实就是用来暴露接口的。这就意味着苹果不想让我们调用这些.h,使不能通过加入私有库直接调用这些私有API了。
但是如果找到了别人导好的头文件,可以通过动态加载代码的方法调用私有API。(https://github.com/nst/iOS-Runtime-Headers/blob/3686717e107fa36a990fac20c30da2da9a25b698/PrivateFrameworks/PhotoLibrary.framework/PLPhotoLibrary.h)
NSBundle *b = [NSBundle bundleWithPath:@"/System/Library/PrivateFrameworks/Message.framework"];
    BOOL success = [b load];

    Class NetworkController = NSClassFromString(@"NetworkController");
    id nc = [NetworkController sharedInstance];

你可能感兴趣的:(苹果私有API)