privateframework使用-创新互联

在iOS 开发过程中,虽然使用private framework 的应用会被拒绝审核,但这并不意味着private framework 就不使用,,相反,它很强大,很好用,甚至提供一些匪夷所思的功能.

第一种:导入整个framework
使用private framework 比较简单,只需要分为两步就可以了
首先在xcode 中找到private framework ,目录路径:
/Applications/Xcode.app/Contents/Developer/Platforms/iPhoneOS.platform/Developer/SDKs/iPhoneOS6.0.sdk/System/Library/PrivateFrameworks/
将整个framework 拷贝出来

第二步,找到private-framework 头文件
将该framework的所有头文件放在header文件夹中,并把header放在framework文件夹中,这样就能成功调用.
*注:
用第一种方法往往是最麻烦的,要把framework整个添加进去,而因为不同framework之间关联是比较大的,所以往往不是那么顺利的,

第二种,动态加载类
不需要导入framework,只需要知道要使用类的头文件
第一步,导入所需要的头文件
第二步,直接使用,但注意,使用类方法时,因为只引用了头文件,在工程中它并没有被实现,所以会出现类似这种提示:
[CKMadridService initialize];
Undefined symbols for architecture armv7:
 "_OBJC_CLASS_$_CKMadridService", referenced from:
   objc-class-ref in ViewController.o
ld: symbol(s) not found for architecture armv7
解决方法:对编译器来说,它只是个class,并且Class是有实现的,所以可以使用这种方法
[NSClassFromString(@"CKMadridService") initialize];
*注:
生成头文件:使用class-dump  工具可以把库文件(.a)中声明的所有类输出出来,但只可输出类的声明,并不能输出c函数的声明

第三种:使用private framework中的C函数
#include
#define PRIVATE_PATH "/System/Library/PrivateFrameworks/CoreTelephony.framework/CoreTelephony"

void *kit = dlopen(PRIVATE_PATH,RTLD_LAZY);
NSString *imsi = nil;
int (*CTSIMSupportCopyMobileSubscriberIdentity)() = dlsym(kit, "CTSIMSupportCopyMobileSubscriberIdentity");
  imsi = (NSString*)CTSIMSupportCopyMobileSubscriberIdentity(nil);
dlclose(kit);

成都创新互联专注为客户提供全方位的互联网综合服务,包含不限于成都网站建设、做网站、歙县网络推广、微信平台小程序开发、歙县网络营销、歙县企业策划、歙县品牌公关、搜索引擎seo、人物专访、企业宣传片、企业代运营等,从售前售中售后,我们都将竭诚为您服务,您的肯定,是我们大的嘉奖;成都创新互联为所有大学生创业者提供歙县建站搭建服务,24小时服务热线:028-86922220,官方网址:www.cdcxhl.com

另外有需要云服务器可以了解下创新互联scvps.cn,海内外云服务器15元起步,三天无理由+7*72小时售后在线,公司持有idc许可证,提供“云服务器、裸金属服务器、高防服务器、香港服务器、美国服务器、虚拟主机、免备案服务器”等云主机租用服务以及企业上云的综合解决方案,具有“安全稳定、简单易用、服务可用性高、性价比高”等特点与优势,专为企业上云打造定制,能够满足用户丰富、多元化的应用场景需求。


网站名称:privateframework使用-创新互联
文章来源:http://pwwzsj.com/article/deggps.html