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等编程技术的技巧经验分享),若作品对您有帮助,请关注、分享、点赞、收藏、在看、喜欢,您的支持是我们为您提供帮助的最大动力。

相关推荐
dessler16 分钟前
RabbitMQ-镜像队列(Mirrored Queues)
linux·运维·rabbitmq
瑾曦19 分钟前
Docker相关命令
linux
发抖吧小喵喵23 分钟前
rpm包直接安装新系统缺少依赖问题处理
linux·运维·服务器
码农101号1 小时前
Linux中Docker Swarm介绍和使用
linux·spring cloud·docker
Nazi61 小时前
dockerfile基础
linux·运维·docker·容器·云计算
所念皆为东辞1 小时前
elk部署加日志收集
linux·elk·elasticsearch·centos
TLucas2 小时前
Centos 7部署.NET 8网站项目
linux·nginx·postgresql·centos·.net
Doris_LMS6 小时前
在Linux下安装nginx(保姆级别)
linux·运维·nginx·centos
可曾去过倒悬山7 小时前
mac操作笔记
macos
可曾去过倒悬山7 小时前
Mac上优雅简单地使用Git:从入门到高效工作流
git·elasticsearch·macos