首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >为什么用户框架不能使用iOS模块?

为什么用户框架不能使用iOS模块?
EN

Stack Overflow用户
提问于 2013-09-23 02:48:34
回答 2查看 250关注 0票数 4

XCode5.0 (iOS 7.0SDK)增加了一个很棒的新特性--模块(参见WWDC 2013年会话404)。

这是很棒的,因为它加快了编译时间,消除了手动链接框架的需要。苹果的框架。

苹果工程师在said WWDC talk中特别指出,“用户框架不能使用模块”。我理解这意味着这是不可能的(或者可能会导致拒绝?)做这样的事。

为什么不行?

编辑

这个问题并不是要对这种限制提出“它是否正确”的问题。更确切地说,“对于阻止创建用户框架模块的模块,是否存在一些限制”?或者,安全漏洞.不知道为什么这会有安全问题,因为它仍然是一个静态的框架?

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2013-09-23 03:02:28

您可以为用户框架创建模块。它被记录在这里:http://clang.llvm.org/docs/Modules.html

但是这个过程很复杂,你需要知道你在做什么,否则它会崩溃,而苹果目前没有提供任何文档或工具来解释如何让它工作。

定制框架和苹果的官方框架没有区别。唯一的区别是,苹果的框架被一个非常了解编译器工作原理的人捆绑到了一个模块中,这对于创建一个模块是非常必要的。

票数 3
EN

Stack Overflow用户

发布于 2013-09-23 03:18:18

这只是我的猜测。

新模块的工作方式类似于预编译的带有自动静态库链接的头。最大的好处是不需要在不同的编译单元中解析相同的头集。编译器将预编译框架的头文件并使其可重用.

主要的问题是一个项目不能有两个预编译的头。如果标题是预编译的,则每个编译单元(.m文件)中的内容必须是相同的。

让我们假设您的可以创建自定义模块:

mymodule.h

代码语言:javascript
复制
#ifndef MyCountType 
#    define MyCountType int
#endif
static MyCountType counter_per_file;

somefile.m

代码语言:javascript
复制
#define MyCountType double

#import "mymodule.h" // or @import "mymodule.h"

someotherfilie.m

代码语言:javascript
复制
#define MyCountType unsigned int

#import "mymodule.h" // or @import "mymodule.h"

那么counter_per_file的类型应该是什么呢?在预编译mymodule.h时,编译器无法知道MyCountType的类型,可能是int或任何东西。

票数 -1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/18951093

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档