1. itunes降级
下载完后,安装,第一次启动的时候按住 option 键,这样才不会报错,安装完成后,即可下载应用的 ipa 包。下载完成后,在应用的图标上按右键,show in finder 即可找到 ipa 包。
2. Objective-C import 第三方库头文件总结
以下内容转载自:作者: KANGZUBIN
当我们的 iOS 工程要引用其它第三方开源库时,一般有以下几种方式:
(1)下载源代码直接拖拽到工程中;
(2)使用 CocoaPods 管理,当开启 use_frameworks! 标记时,第三方库会被编译成 .framework 引入工程,否则就会编译成 .a 静态库;
(3)使用 Carthage 管理,第三方库会被编译成 .framework 然后导入工程;
(4)直接下载作者编译好的 .framework 导入工程。
但当我们在代码中要 import 第三方库的头文件时,对于这几种情况,写法都不太一样,以 AFNetworking 为例,总结如下:
* 对于(1)拖拽源码,只能以 "" 引号的方式 import,
#import "AFNetworking.h"
* 对于(2)CocoaPods,如果开启 use_frameworks!,则将编译成 .framework 库,只能以 <> 尖括号的方式 import,**此外,对于(****3****)和(****4****)也是这样**,
#import <AFNetworking/AFNetworking.h>
* 而对于 CocoaPods,如果不开启 use_frameworks!,则将编译成 .a 库,此时有如下 3 种方式 import,
#import "AFNetworking.h"
// 或者
#import <AFNetworking.h>
// 或者
#import <AFNetworking/AFNetworking.h>
那么问题来了,如果我们在写一个 SDK 或者私有的 Pods 库,需要宿主 App 工程引用某一个第三方库,如上所述,宿主工程有很多方式引用第三方库,这样我们就无法确定应该以哪种方式 import 头文件,怎么办呢?这时候我们就可以使用 __has_include() 宏来判断。
__has_include() 宏接收一个预引入的头文件名称(引号或者尖括号都可以)作为参数,如果该头文件能够被引入则返回 1,否则返回 0,使用起来如下:
#if __has_include(<AFNetworking/AFNetworking.h>)
#import <AFNetworking/AFNetworking.h>
#else
#import "AFNetworking.h"
#endif
网友评论