Windows搭建Swift语言编译环境?如何构建ObjC语言编译环境?Swift如何引入ObjC框架?Interface Builder的历史?

目录

Windows搭建Swift语言编译环境

如何构建ObjC语言编译环境?

Swift如何引入ObjC框架?

Swift和ObjC中IBOutlet和IBAction代表什么?

[Interface Builder的历史](#Interface Builder的历史)

[Xcode的"Use Storyboards"的作用?](#Xcode的“Use Storyboards"的作用?)

Xcode的Playground是什么?


Windows搭建Swift语言编译环境

Windows搭建Swift环境非常简单,从如下地址下载安装包,安装完,自动更新Swift的环境变量,打开命令行即可使用swiftc和swift.

如何构建ObjC语言编译环境?

除了在线ObjC编译器,本地环境Windows/Mac/Linux均可以搭建ObjC编译环境。

  • Mac自然不用多说,ObjC是亲儿子。

  • (WSL Ubuntu 22.04) Ubuntu可以安装gobjc/gnustep和gnustep-devel构建编译环境。
    sudo apt-get install gobjc gnustep gnustep-devel

    注意Clang一样可以编译ObjC,但Clang本身不包含ObjC最基本的头文件和库,需要单独下载,需上面的安装命令完成此环境配置。

    编译方法1:可以使用官方懒人版bash /usr/share/GNUstep/Makefiles/GNUstep.sh并写一个objc编译
    的makefile,用make命令搞定。
    编译方法2:利用gnustep-config --objc-flags和gnustep-config --objc-libs获取objc编译选项,并在编译时带入(注意,需额外增加-lgunstep-base)。例如:
    gcc demo.m -MMD -MP -DGNUSTEP -DGNUSTEP_BASE_LIBRARY=1 -DGNU_GUI_LIBRARY=1 -DGNU_RUNTIME=1 -DGNUSTEP_BASE_LIBRARY=1 -fno-strict-aliasing -fexceptions -fobjc-exceptions -D_NATIVE_OBJC_EXCEPTIONS -pthread -fPIC -Wall -DGSWARN -DGSDIAGNOSE -Wno-import -g -O2 -fconstant-string-class=NSConstantString -I. -I/home/cx/GNUstep/Library/Headers -I/usr/local/include/GNUstep -I/usr/include/GNUstep -shared-libgcc -pthread -fexceptions -rdynamic -L/home/cx/GNUstep/Library/Libraries -L/usr/local/lib -L/usr/lib -lobjc -lm -lgnustep-base -o demo

    如用Clang编译,会遇到"objc/objc.h file not found"的错误,相比上面的GCC命令,需要多加一个头文件路径的参数参数:-I/usr/lib/gcc/x86_64-linux-gnu/11/include,当然也可以手动构造软链接sudo ln -s /usr/lib/gcc/x86_64-linux-gnu/11/include/objc /usr/local/include/objc来解决。

  • (Windows 10) Windows可以下载gnustep可执行包,和上面Ubuntu的gnustep类似,只不过是Windows版本,自然只支持ObjC 1.0,不支持2.0.
    Index of /pub/gnustep/binaries/windows/
    GNUSTEP developer guide可参考官方文档:GNUstep: Documentation,也可以自己组装编译命令,例如:
    H:\tools\GNUstep\bin\gcc.exe demo.m -I H:/tools/GNUstep/GNUstep/System/Library/Headers -L H:/tools/GNUstep/GNUstep/System/Library/Libraries -std=c99 -lobjc -lgnustep-base -fconstant-string-class=NSConstantString

Swift如何引入ObjC框架?

import指令引入ObjC库,Swift可以直接使用ObjC类库,非常方便。例如import Cocoa或import Foundation分别引入Cocoa和Foundation类库。

Swift和ObjC中IBOutlet和IBAction代表什么?

IBOutletIBAction 是用于与 Interface Builder 交互的关键术语,IB代表Interface Builder

. Interface Builder 是 Xcode 中的一个图形界面设计工具,用于创建和管理 iOS 和 macOS 应用程序的用户界面。IBOutlet指示它与UI控件关联,IBAction指示它是UI控件事件响应。从定义上,它们肯定都是空,仅仅是指示作用。

Interface Builder的历史

Interface Builder 是一款由苹果公司开发的图形用户界面(GUI)设计工具,用于 iOS 和 macOS 应用程序开发。它最初是在 1990 年代初期作为 Macintosh 应用程序的一部分出现的,名为 "Picture Book",后来更名为 "CodeBook",再后来改名为Interface Builder,最新被称为StoryBoard,是一个基于 XML 的文件格式,用于设计和管理应用程序的用户界面。

Xcode的"Use Storyboards"的作用?

"Use Storyboards" 是苹果公司的集成开发环境Xcode 用于界面设计的一个功能。在 Xcode 中,故事板(Storyboard)是一种用户界面设计工具,允许开发者以可视化的方式创建和管理工作中的应用程序界面。使用故事板,开发者可以通过拖放控件(如按钮、文本框、图像等)到画布上来设计用户界面,并定义它们之间的交互和关系。

Xcode的Playground是什么?

Xcode欢迎界面可能看到"Get started with a playground"的提示,它其实是一个可以快速查看代码编译运行结果的交互式开发环境。它让开发者能够快速地编写Swift或Objective-C代码,并立即看到代码的执行结果。这对于教学、演示非常有用。

  • 注意,本质上,Playground并不是编译运行的结果,如果仅仅是定义变量,依然能显示变量的内容,但编译运行并不会显示。Playground相当于跟踪了变量的内容。

若文章对您有帮助,欢迎关注 程序员小迷 。助您在编程路上越走越好!

微风不燥,阳光正好,你就像风一样经过这里,愿你停留的片刻温暖舒心。

我是 程序员小迷 (致力于C、C++、C#、Android、iOS、Java、Kotlin、Objective-C、Swift、Shell、JavaScript、TypeScript、Python等编程技术的技巧经验分享),若作品对您有帮助,请关注、分享、点赞、收藏、在看、喜欢,您的支持是我们为您提供帮助的最大动力。

相关推荐
慕伏白29 分钟前
【慕伏白】Linux 系统如何根据端口号关闭进程
linux·运维·服务器
代码的小搬运工32 分钟前
【iOS】3G-Share仿写总结
macos·ios·cocoa
letisgo544 分钟前
VMware Workstation + Ubuntu 26.04 LTS 小白运维部署手册
linux·运维·ubuntu
IT探索1 小时前
Linux 查找文件指令总结
linux·算法
晚风吹长发1 小时前
Docker使用——Docker容器及相关命令
linux·运维·服务器·docker·容器·架构
sulikey1 小时前
个人Linux操作系统学习笔记11 - 环境变量
linux·笔记·学习
寒水馨1 小时前
Windows下载、安装ollama-v0.32.1(附安装包OllamaSetup.exe)
windows·llm·大语言模型·llama·本地部署·ollama·模型运行
Kina_C1 小时前
NFS与Autofs快速讲解-从原理到实战配置
linux·nfs·autofs
皮卡狮1 小时前
文件系统:磁盘硬件寻址和系统软件寻址
linux
曾阿伦2 小时前
Windows 下运行 Hadoop 并部署到 AWS EMR 指南
hadoop·windows·aws