Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/ios/112.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Ios 我们为什么要使用_框架!在椰子荚里?_Ios_Frameworks_Cocoapods_Static Libraries - Fatal编程技术网

Ios 我们为什么要使用_框架!在椰子荚里?

Ios 我们为什么要使用_框架!在椰子荚里?,ios,frameworks,cocoapods,static-libraries,Ios,Frameworks,Cocoapods,Static Libraries,我用过用过\u框架在CocoaPodsPodfile中多次出现。我只是想知道我们为什么要用它?我无法得到直接的答案 例如: platform :ios, '8.0' use_frameworks! target "CityWhether" do pod 'Alamofire' pod 'SwiftyJSON' end 使用_框架告诉CocoaPods您希望使用框架而不是静态库。因为Swift不支持静态库,所以您必须使用框架 在另一个回答中,我解释了静态库

我用过
用过\u框架
在CocoaPods
Podfile
中多次出现。我只是想知道我们为什么要用它?我无法得到直接的答案

例如:

platform :ios, '8.0'
use_frameworks!

target "CityWhether" do
    pod 'Alamofire'
    pod 'SwiftyJSON'
end

使用_框架
告诉CocoaPods您希望使用框架而不是静态库。因为Swift不支持静态库,所以您必须使用框架


在另一个回答中,我解释了静态库和框架之间的区别:

可可触控框架 它们始终是开源的,将像你的应用程序一样构建。(所以 Xcode有时会在运行应用程序时编译它,并且总是 清理项目后。)框架仅支持iOS 8和 更新,但您可以在框架中使用Swift和Objective-C

Cocoa Touch静态库 顾名思义,它们是静态的。因此,当 将它们导入到项目中。你可以和别人分享 没有向他们展示你的代码。请注意,静态库当前 不要支持Swift。您必须在测试中使用Objective-C 图书馆。应用程序本身仍然可以用Swift编写


资料来源:|

使用框架
告诉cocoa pods使用动态库,由于swift不支持静态库,这在某一点上非常流行,这意味着别无选择-但是您通常不需要
使用框架不再

从Xcode 9 beta 4和CocoaPods 1.5.0开始,现在支持swift静态库。主要的优势是应用程序启动速度更快,特别是当你有很多POD时——当你有很多DYLIB时,iOS 10和iOS 11不是最快的

,因此您可能需要升级才能获得它:
sudogem安装cocoapods

不过,我发现有几个POD无法正确使用静态库,因此您的里程可能会有所不同。

添加

使用你的框架


在Podfile中,这意味着我们希望将列出的框架动态安装为静态框架。

使用\u框架
声明要使用动态框架,而不是静态库

随着Xcode 9.0和CocoaPods 1.5.0的发布,如果不使用
use\u框架,您可以将静态库与swift结合使用

use\u框架有一个问题
是指您的Pods/产品中的所有框架都是框架

这里有一篇相关文章:

Cocoapod的
使用框架负责二进制文件的类型:

  • 如果
    使用_框架存在-
    动态框架
  • 如果
    使用_框架不存在-
    静态库

使用_框架
Mach-O型
中有一个反映,反映在
Pods
项目的相应目标中

时间线:

  • 介绍了
    使用框架必须用于Swift pod
  • Xcode 9允许您进行选择

  • 从Xcode 9 beta 4开始,发布说明静态库现在支持swift,CocoaPods正在更新以支持这一点,请参见Sort and sweet description。这真的很有帮助,我很困惑。既然您不能更改已签名的二进制文件,那么是否允许下载动态框架?如果没有,那么
    使用_框架
    或一般动态框架有什么用途。如果它们是允许的,那么在不改变有符号二进制文件的情况下,如何绕过限制集呢?你的意思是使用_框架吗!用感叹号?从那以后,我一直对此感到困惑!意思是没有。我这样做了,然后我遇到了相同的
    没有这样的模块
    错误。这是那些CoCoapod中的一个问题吗?我必须添加
    use\u modular\u标题
    添加到我的Podfile,以使它与可能需要它但自己还不能启用它的pod一起工作。@Joseph“主要优点是应用程序启动速度更快”。这似乎与DLL的说法相矛盾,后者也提出了DLL的同样主张:“一旦启动,将内存使用量降至最低,会使应用程序启动更快”。这是否意味着,如果在启动时不需要使用库,dll将导致更快的启动时间,或者它是一个流行的库,因此已经加载到内存中?@Tolkienwsp该页面似乎是关于macOS而不是iOS的。但是,是的,如果DLL在启动后才加载,那么DLL将是一个胜利。不幸的是,在iOS的情况下,在我看到的情况下,所有DLL都是在应用程序完成启动之前加载的,所以这会让事情变得更慢。WWDC至少有一次关于优化iOS应用程序启动时间的演讲,其中明确提到了确保你没有超过3或4个DLL。我想这就是上面提到的视频:我鼓励你使用DYLD_PRINT_STATISTICS环境变量来衡量你的应用程序启动速度和看看什么最适合你。>
    use\u frameworks的一个性能是,你在Pods/产品中的所有框架都是框架。
    One performance what?你链接的文章棒极了。我建议大家去看看,谢谢,但请提供更多关于动态安装与静态安装的详细信息。