一句话笔记(11)

一句话笔记,某段时间内遇到或看到的某个可记录的点。 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对应的ValueTrue,那么打开所传入的Universal Link时,只允许通过这个Link所代表的iOS应用跳转的方式打开这个链接,否则就会返回successfalse,也就是说只有安装了Link所对应的App的情况下才能打开这个Universal Link,而不是通过启动Safari方式打开这个Link的代表的网站。

[application openURL:URL options:@{UIApplicationOpenURLOptionUniversalLinksOnly : @YES} completionHandler:nil];

源自: iOS10新变化之废弃的openURL

2、启动优化小点

如果我们想知道程序启动的时间,则可以在工程的scheme中添加环境变量DYLD_PRINT_STATISTICS,DYLD_PRINT_STATISTICS + 1。这样在调试时,可以在控制台打印出程序启动过程中各个阶段所消耗的时间。

一句话笔记(11)_第1张图片
DYLD_PRINT_STATISTICS

而且在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 开发中的『库』(一)的一些纠正,个人有些地方是不懂的,先收藏着。
一句话笔记(11)_第2张图片
sunny 的纠正.jpg

然后接着再看看 iOS 开发中的『库』(二), 理解貌似有点进步啦。

你可能感兴趣的:(一句话笔记(11))