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

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中的对象;

文档资料

开发文档

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

网上资料

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

开发工具

集成开发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:可视色比较两个文件或文件内容;
  • 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下macOS软件开发界面为主。

项目创建

  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)。

快捷键

  1. 鼠标左键+option,然后点击某个类型,在弹出窗口点击相应的类型名可直接跳转到document;
  2. control+i,格式化代码;
  3. command+d,删除行(需要在keymap中搜索delete line自行设置);

新手疑惑

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

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版本选择? {id="xcode_2"}

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

相关推荐
hairenjing1123几秒前
在 Android 手机上从SD 卡恢复数据的 6 个有效应用程序
android·人工智能·windows·macos·智能手机
远望清一色7 分钟前
基于MATLAB的实现垃圾分类Matlab源码
开发语言·matlab
GIS程序媛—椰子13 分钟前
【Vue 全家桶】7、Vue UI组件库(更新中)
前端·vue.js
confiself16 分钟前
大模型系列——LLAMA-O1 复刻代码解读
java·开发语言
DogEgg_00119 分钟前
前端八股文(一)HTML 持续更新中。。。
前端·html
ZL不懂前端22 分钟前
Content Security Policy (CSP)
前端·javascript·面试
木舟100926 分钟前
ffmpeg重复回听音频流,时长叠加问题
前端
XiaoLeisj28 分钟前
【JavaEE初阶 — 多线程】Thread类的方法&线程生命周期
java·开发语言·java-ee
杜杜的man31 分钟前
【go从零单排】go中的结构体struct和method
开发语言·后端·golang
幼儿园老大*32 分钟前
走进 Go 语言基础语法
开发语言·后端·学习·golang·go