求助 编译错误
3个回答
展开全部
App工程里项目 .swift 都是编译为模块,不能有 top level code
先明确一个概念,一个 .swift 文件执行是从它的第一条非声明语句(表达式、控制结构)开始的,同时包括声明中的赋值部分(对应为 mov 指令或者 lea 指令),所有这些语句,构成了该 .swift 文件的 top_level_code() 函数。
而所有的声明,包括结构体、类、枚举及其方法,都不属于 top_level_code() 代码部分,其中的代码逻辑,包含在其他区域,top_level_code() 可以直接调用他们。
程序的入口是隐含的一个 main(argc, argv) 函数,该函数执行逻辑是设置全局变量 C_ARGC C_ARGV,然后调用 top_level_code()。
不是所有的 .swift 文件都可以作为模块,目前看,任何包含表达式语句和控制控制的 .swift 文件都不可以作为模块。正常情况下模块可以包含全局变量(var)、全局常量(let)、结构体(struct)、类(class)、枚举(enum)、协议(protocol)、扩展(extension)、函数(func)、以及全局属性(var { get set })。这里的全局,指的是定义在 top level 。
这里说的表达式指 expression ,语句指 statement ,声明指 declaration 。可能和有些人对相关概念的定义不同。实际上我特无奈有些人纠结于概念问题,而不是问题本身,本来翻译过来的舶来品就有可能有误差,当你明白那指的是什么的时候,就可以了。
先明确一个概念,一个 .swift 文件执行是从它的第一条非声明语句(表达式、控制结构)开始的,同时包括声明中的赋值部分(对应为 mov 指令或者 lea 指令),所有这些语句,构成了该 .swift 文件的 top_level_code() 函数。
而所有的声明,包括结构体、类、枚举及其方法,都不属于 top_level_code() 代码部分,其中的代码逻辑,包含在其他区域,top_level_code() 可以直接调用他们。
程序的入口是隐含的一个 main(argc, argv) 函数,该函数执行逻辑是设置全局变量 C_ARGC C_ARGV,然后调用 top_level_code()。
不是所有的 .swift 文件都可以作为模块,目前看,任何包含表达式语句和控制控制的 .swift 文件都不可以作为模块。正常情况下模块可以包含全局变量(var)、全局常量(let)、结构体(struct)、类(class)、枚举(enum)、协议(protocol)、扩展(extension)、函数(func)、以及全局属性(var { get set })。这里的全局,指的是定义在 top level 。
这里说的表达式指 expression ,语句指 statement ,声明指 declaration 。可能和有些人对相关概念的定义不同。实际上我特无奈有些人纠结于概念问题,而不是问题本身,本来翻译过来的舶来品就有可能有误差,当你明白那指的是什么的时候,就可以了。
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
蜚语科技
2023-04-23 广告
2023-04-23 广告
蜚语安全是一家专注于提供软件供应链安全创新解决方案的网络安全企业,成立于2019年。蜚语安全孵化自上海知名大学计算机系,创始团队由4名博士组成,拥有十数年的前沿安全研究和一线安全业务经验。蜚语安全扎根左移安全开发赛道,深耕企业安全服务市场,...
点击进入详情页
本回答由蜚语科技提供
展开全部
思路是这样的。我创建一个TabBar的应用(由Empty创建,为了练习对程序整体结构的理解),这个TabBar位于画面底部,有5个TabBar Item分别对应5个不同的ViewController,它们分别是:DatePickerViewController, SingleComponentPickerViewController, DoubleComponentPickerViewController, DependentComponentPickerViewController和CustomPickerViewController。在Application Delegate的didFinishLaunchingWithOptions中分别对5个ViewController和TabBarController进行初始化并将UITabBarController设置为root view controller,代码如下:
<pre class="brush:objc; toolbar: true; auto-links: false;">
- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions
{
<pre class="brush:objc; toolbar: true; auto-links: false;">
- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions
{
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
什么错呢?贴出来看看
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询