OSX-01-Mac OS应用开发概述

本文介绍了Objective-C作为MacOS和IOS应用开发的主要语言,以及Cocoa和CocoaTouch框架的作用。同时讨论了Swift的兴起和与Objective-C的关系,以及Xcode作为开发工具的重要性。
摘要由CSDN通过智能技术生成

Objective-C是一种面向对象的编程语言,它是编写Mac OS应用、IOS手机应用软件的主要编程语言,同时也是Cocoa和Cocoa Touch框架的主要编程语言。ObjC语言并不复杂,但是会有很多名词和术语需要掌握和理解(后续会在使用时逐步介绍)。

开发语言

开发Apple公司相关产品的软件时,主要有两个框架可供使用:Cocoa和Cocoa Touch。Cocoa是一个开发Mac OS系统应用的开发工具包,而Cocoa Touch工具包主要用于IOS系统应用的开发,可以简单理解为Objective-C是一种编程语言,而Cocoa是开发框架,发展至今天,Apple Develop开发体系大体如下图所示:
在这里插入图片描述
上图中有几点需要详细说下明:

  • . Foundation:这是一个ObjC语言的核心扩展包。它并没有内置于Objective-C语言中,也不包含任何UI元素,所以可以在不同的平台通用,大概提供了100多个扩展类;
  • . Cocoa:MacOS系统应用开发框架,它提供了丰富用户体验的UI框架,由Foundation库、用于数据管理的CoreData框架以及AppKit图形化框架组成;
  • . Cocoa Touch:IOS系统应用开发框架,它提供了丰富用户体验的UI框架,它包括Foundation库、用于数据管理的CoreData框架以及UIKit库,UIKit可以看成是简版的Appkit,同时附加了比如wifi
    、gps等API;
  • Swift:一种后期开发的Apple系统应用软件的开发语言,原因是作为一门比较老的语言,
    Objective-C缺少很多现代语言所具备的高级特性。可以简单理解为Swift是为了弥补ObjC的缺陷而开发的一种语言,ObjC与Swift可以相互调用,所以在同一项目中可以并存;

Foundation是在早期的CoreFoundation框架的基础上开发的,开发时也可以使用CoreFoundation(但不建议),在帮助文件中以CF开头的全是CoreFoundation中的对象;

在这里插入图片描述

  • Macos X kernel:内核以设备驱动程序的形式提供与硬件的底层通信。它负责管理系统资源,包括调度需要执行的程序、管理内存和电源,以及执行基本的I/O操作。
  • Core services:核心服务提供的支持比它上面层次更加底层或更加“核心”。例如,提供对集合、网络、调试、文件管理、文件夹、内存管理、线程、时间和电源的管理。
  • Application Services:应用服务层包含打印和图形渲染的支持,包括Quartz、OpenGL和Quicktime。
  • Cocoa:开发框架,Cocoa包括Foundation、Core Data和AppKit框架。Foundation框架提供处理集合、字符串、内存管理、 文件系统、存档等相关的类。AppKit框架提供管理视图、窗口、文档和使Mac

文档资料

开发文档

在Foundation中有125个可用的头文件(还在增加),通过import <Foundation/Foundation.h>的方式导入。为了不与其它框架的语言冲突,所有的系统类对象都以 NS 开头。

  • 可以Xcode的Help菜单下获取:

在这里插入图片描述

在这里插入图片描述

网上资料

Apple官方资料可以说做的非常用心了,主要能用到的链接有两个,其它需要的都可在下面网站进行二次导航查看:

  • AppleDeveloper:https://developer.apple.com/cn/
  • Swift-API:https://docs.swift.org/swift-book/documentation/the-swift-programming-language/aboutswift/
    在这里插入图片描述

开发工具

集成开发IDE

常用的IDE有两个一个是XCode另一个是AppCode,个人还是比较建议使用Xcode来开发的。Xcode界面如下:

在这里插入图片描述

笔者使用的是:Mac Monterey V12.7.3, Xcode V13.4.1,最新版本的Xcode
V15+版本需要升级系统,需要注意的是系统版本有时需要和硬件配置相匹配,否则可能会出现性能问题。

另一个常用的IDE是AppCode,是Google公司开发的,已经集成到了Intellij开发工具集中,这个工具不过多介绍了,操作方式同Intellij IDE家族其它产品一样,AppCode界面如下所示:

在这里插入图片描述

Xcode附带的开发工具

Xcode除了提供IDE外,还打包提供了如下一些常用的开发工具(随Xcode一同安装,也可在官网按需下载):
在这里插入图片描述

这些工具可以在Dock右键,也可以XCode【文件】菜单中打开,详细如下(部分已不再提供了而是集成到了Xcode中):

  • Instruments:用于动态调追踪和分析OS X和iOS的代码的性能分析和测试工具
  • Simulator:模拟器,用于模拟 iOS 平台设备,在模拟器上运行对应的程序, 方便没有实体设备的时候去调试程序
  • Accessibility inspector:辅助功能检查器,用它来检测APP控件元素的层级结构,使用它可以快速地获取各个控件元素的层级
  • FileMerge:可视化文件合并,用于合并.m和.h为一个文件;;
  • Create ML:生成机器学习模型的工具。它可以接收用户给定的数据,生成 iOS 开发中需要的机器学习模型(Core ML 模型)
  • Reality Composer:AR 和 3D 内容创作工具,支持 Mac(与 Xcode 集成) 和 iOS 平台

其它常用开发工具

其实来讲Xcode已够做的够好了,但还有一些开发软件可能会经常用到了,笔者常用的有这些:

在这里插入图片描述

  • DevClearner:项目垃圾清理工具;
  • Developer:开发者客户端;
  • XCformat:代码格式化工具;
  • SF符号:ICON设计工具,此工具非常方便,里面的图标也可用于PPT制作;
  • TestFight:测试工具;
  • Transporter:App Store上传工具,用于发布个人软件;

最新的Macbook Pro笔记本电脑相比老款电脑主要是升级了CPU,所谓的M1, M2, M3除了比原Intel的CPU主要是加了MPU功能,即支持AI神经网络的计算,但这个区别对于开发Mac应用基本没有任何帮助。

XCode使用

Xcode功能非常多,无法短时间内讲清楚。不太建议针对Xcode进行系统的学习,而是在学习编码的过程中逐渐掌握。 本教程主要是介绍OS X应用的开发,所以文中所有配图全部截取的是Xcode-V13.4.1版本的Xcode,不同的XCode的操作界面有些许改变,如果找不到对应的功能可在Help中搜索关键字即可。
在这里插入图片描述

项目创建

  1. 首次启动Xcode,需要从菜单File-New->Project,New菜单下内容比较多,还是秉着用到再了解的原则此处只讲Project,其它的菜单项在后续需要时再详细讲解。选择project后进入工程模版选择界面:

在这里插入图片描述

针对不同的应用,XCode给出了不同的项目向导和基础实现,比如非图形化的项目一般选择Command Line Tool、如果是图形化的可选择App、如果是文档处理类的应用则选择Document App。

  1. 项目配置,通常是选择Storyboard和Objective-C或Swift-UI和Swift。

在这里插入图片描述

  • Team和Organization Identifiler:app标识,一般添加公司标识即可;

  • Interface:指定UI类型,可选的有XIB、Storyboard、Swift
    UI,主要是开发语言不同,前两者使用ObjC语言缩写,第三种使用Swift语言编写,其中XIB和Storyboard的区别不是太多,但Storyboard比XIB提供了更好的复用性;

  • Language:选择开发语言Objective-C或swift,主要是项目源码架构有些不同。因为这两种语言可以同时在一个项目中存在,所以本质上区别不大;

  • 开发语言可以选择Objective-C或Swift都可,这是两种不同的语言,Swift可认为是一种兼容性的语言,为了同样的UI在不同的设备上表现相同而开发的。

确定后,创建一个xcode项目后,项目结构大体如下,左边是源码区、中间是编辑区、右侧是属性设置区:

在这里插入图片描述

点击左侧三角号可以运行项目,项目运行时会在在最底部会有日志和调试区等。

补充知识:Group和Target,复杂的项目可以有多个组和目标,每个Target可以拥有不同的配置。Group主要是用于管理项目的源文件,Group不是java中包的概念,它是XCode的一个逻辑分组不会真正的移动文件位置,但可以设置Group指向某个具体的文件夹。

开发界面

Cmd类型项目工作区

大体如下图所示,比较简单,所有的源码和文件都需要自己创建。

在这里插入图片描述

App类型项目工作区

图形界面应用,操作会稍复杂,在Cocoa框架章会详细讲解。
在这里插入图片描述

  1. 工程Target配置区:有6个分类的切换tab,管理工程各种配置;
  2. Inspector面板区:位于最右边,能方便的对当前选中的内容进行管理设置;

在这里插入图片描述

  1. xib结构导航区:点击切换不同的控件,方便inspector;
  2. 控件工具箱:xib设计界面需要的各种控件库;
xib相关工作区

主要包括xib结构导航区,xib界面设计区,xib inspector面板区,控件工具箱以及Assistant Editor。主要是用来设计UI界面的,xib文件是一个xml格式的文件,无法像java Swing那样手工编码代码,只能依赖Interface Builder工具来拖动设计。

xib inspector面板区

在这里插入图片描述

  1. Identity: 如果控件使用自定义的类,需要从Class下拉列表中选择
  2. Attributes:用来对每个控件不同风格样式属性设置
  3. Connections:用来控件响应的事件设置,控件对应的Outlet变量绑定
Assistant Editor工作区

主要用于编辑xib文件,可以先选择一个xib文件后,然后通过菜单“View->Assistant Editor->Show Assistant Editor”调出窗口(注意:Xcode版本不同其打开方式也不一样,但无论哪种方式打开都是一边是图形,一边是代码)。 在最新的Xoce版本中此菜单被移到了工作中,打开方法是先打开xib界面,然后在工具栏中找到Assistant菜单:在这里插入图片描述

项目设置

项目设置的主要功能区如下图所示:

在这里插入图片描述

General

设置项目的基本信息,主要有两项需要注意:

  • Application Category:提交到AppStore的项目必须要设置一个分类;
  • Deployment Target:设置一个最低的os x版本;
Capabilities

App测试和发布需要关注的开关,需要哪个就开放哪个,需要关注以下两项:

  • App Sandbox:提交到AppStore的项目必须使用沙盒;
  • 需要APP要访问远程api,必须打开 Outgoing Connections;
  • Hardware里面要打开print;
  • File Access:如果要访问本地文件,此项要进行进应的设置
info

工程基本信息.plist文件,用来描述配置信息。经如设置图标等APP信息,在 Document Types 中可以设置系统文件的打开类型绑定或是鼠标右键功能等。也可以在工程中加入info.plist文件来补充此设置中的内容(.
plist优先级低于此处的设置)。

Build Settings

设置APP绑定三方软件的设置,比如引用了三方框架,则需要设置Other Code Signing Flags为–deep,否则无法正常打包。

Build Phases

Build Phases用于设置编辑目标和引入的三方库管理(Link binary With Libraries)。

工具栏

在开发时一般有几个比较方便的功能需要在XCode中设置一下

  1. 打开View - Show Toolbar,主要是打开库按钮;
  2. 键盘上方的触摸屏会有很多快捷按钮,需要经常使用,主要有文件导航和格式化这丙个功能;

快捷键

  1. 鼠标左键+option,然后点击某个类型,在弹出窗口点击相应的类型名可直接跳转到document;
  2. control+i,格式化代码;
  3. command+d,删除行(需要在keymap中搜索delete line自行设置);
  4. command+左/右箭头,快速移到行首和行尾
  5. command+shift+o,快速查找;
  6. command+option+左/右箭头:展开和折叠代码,功能们于Edit-Code Folding下面
  7. command+option+shift+左/右箭头:展开和折叠所有方法

新手疑惑

在java和python横行的时代,Mac开发语言可以说是比较小众,先解答几个新入门同学常见的问题的吧以免小走弯路。

从其它语言转到Objective?

个人观点,ObjectiveC并不太好学习,除了生态不谈外就语言本身它要求学习者即要掌握服务端语言能力还需要有前端的一些基础。如果您之前学习过java、py这类语言那么掌握起来可能相对容易,如果您原来是从事html这类前端开发的可能需要多花些精力。

Objective-C还是Swift?

RE:如果您只是业余爱好,学习swift即可(相比objc简单)。但个人建议是全学,因为Swift是基于Objective-C发展封装而来的,其底层还是ObjC
语言。有一点需要注意的是这两种语言的语法相差较远,但概念一样,掌握了其中一种后很容易掌握另一种,学习路径是objc–>swift;

Storyboard、xib还是Swift-UI?

RE:选择storyboard或swift,主要依赖于您哪种语言熟悉,不依赖是否有可拖拽的设置工具,因为做真实项目时多数是用代码堆界面,很少采用拖拽的方式;

Xcode还是AppCode?

RE:Xcode,没啥好说的。虽然AppCode相比Xcode在某些编码过程中更智能,但在生态上还是比Xcode差了很多,不过这两种IDE所创建的工程源码结构是通用的;

Xcode版本选择?

RE:Xcode最新版本为V15+,需要注意的是Xcode与Mac OS操作系统的版本相关,比如os x 12最高使用xcode v13,如果想使用v15的Xcode,需要装os x升级到v14(sonoma)。个人建议是如果是intel芯片的电脑不建议升级到sonoma,如果非要升级一定要提前备份系统避免不必要的麻烦。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

korgs

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值