一句话笔记,某段时间内遇到或看到的某个可记录的点。 2016-9-30
- iOS10 中的openURL
- 启动优化小点
- .framewok & .a , .thd & .dylib,动态库 & 静态库
1、iOS10 中的openURL
[[UIApplication sharedApplication] openURL:URL options:@{} completionHandler:nil];
异步执行 open 操作,主线程执行回调。
// Option for openURL:options:CompletionHandler: only open URL if it is a valid universal link with an application configured to open it
// If there is no application configured, or the user disabled using it to open the link, completion handler called with NO
UIKIT_EXTERN NSString *const
UIApplicationOpenURLOptionUniversalLinksOnly NS_AVAILABLE_IOS(10_0);
UIApplicationOpenURLOptionUniversalLinksOnly
,其对应的Value
为布尔值,默认为False
.如该Key
对应的Value
为True
,那么打开所传入的Universal Link
时,只允许通过这个Link所代表的iOS
应用跳转的方式打开这个链接,否则就会返回success
为false
,也就是说只有安装了Link
所对应的App
的情况下才能打开这个Universal Link
,而不是通过启动Safari方式打开这个Link
的代表的网站。
[application openURL:URL options:@{UIApplicationOpenURLOptionUniversalLinksOnly : @YES} completionHandler:nil];
2、启动优化小点
如果我们想知道程序启动的时间,则可以在工程的scheme中添加环境变量DYLD_PRINT_STATISTICS,DYLD_PRINT_STATISTICS + 1。这样在调试时,可以在控制台打印出程序启动过程中各个阶段所消耗的时间。
而且在iOS 10中,对输出的内容做了简化,如上图所示,简单易懂。这样,我们就可以有针对性去优化我们的启动流程。
源自: WWDC之优化App启动速度
3、 .framewok & .a , .thd & .dylib, 动态库 & 静态库
.framewok & .a
.a是一个纯二进制文件,不能直接拿来使用,需要配合头文件、资源文件一起使用。在 iOS 中是作为静态库的文件名后缀。
.framework中除了有二进制文件之外还有资源文件,可以拿来直接使用。
关系: 可以这样理解:.framework = .a + .h + bundle
-
.thd & .dylib
- .dylib:是动态库的文件的后缀名。
- .tbd: 是苹果压缩 iOS 系统和应用大小的一个产物。其实就是一个文本文件(It is just a text file.),描述了需要链接的动态库的信息。目的是为了减少app 的下载大小 。
动态库 & 静态库
-
静态库: 在链接的时候,完整地拷贝至可执行文件中。(在编译的时候会被直接拷贝一份,复制到目标程序里。)
-
静态库的好处:编译完成之后,库文件实际上就没有作用了。
目标程序没有外部依赖,直接就可以运行。 - 静态库的缺点:就是会使用目标程序的体积增大。
-
静态库的好处:编译完成之后,库文件实际上就没有作用了。
-
动态库: 在链接的时候,由系统动态加载到内存,供程序调用。(等到程序运行时,动态库才会被真正加载进来)
- 动态库的优点:不需要拷贝到目标程序中,不会影响目标程序的体积,而且同一份库可以被多个程序使用。也可以让我们随时对库进行替换,而不需要重新编译代码。
- 动态库的缺点:动态载入会带来一部分性能损失,使用动态库也会使得程序依赖于外部环境。
源自: iOS 开发中的『库』(一)
另外 sunny 对 iOS 开发中的『库』(一)的一些纠正,个人有些地方是不懂的,先收藏着。
然后接着再看看 iOS 开发中的『库』(二), 理解貌似有点进步啦。