`
yuanyong
  • 浏览: 248997 次
  • 性别: Icon_minigender_1
  • 来自: 杭州
社区版块
存档分类
最新评论

作为新手,长远地看,该学习 Objective-C 还是 Swift?

 
阅读更多
真正从「长远角度」看,学习 Objective-C 还是 Swift 语言其实很不重要。

Swift 刚发布的时候有人说「这下所有人都回到零起点了」,实际上是外行的一个常见的误解。Objective-C / Swift 和 iOS 开发是两个不同的概念,这点希望你清楚。前者仅仅是一门编程语言,而后者则包括了编程思想、Cocoa 框架的使用,甚至交互设计规范、界面设计规范等 iOS 开发所需的一整套东西,并且绝大部分是和语言无关的。从学习的角度看,大部分时间你将花在学习 后者上,而具体语言和语法只占很小的比例。Objective-C 和 Swift 虽然语法上差异很大,但是背后的思想以及所依托的类库都是相同的。关于 iOS 应用开发你能想到的绝大多数问题,例如:

•一个应用的代码是从哪里开始执行的?

•如何建立一个按钮,并实现用户点击这个按钮之后调用一个函数?
•如何修改一个标签的文字?

•如何控制系统发出声音或者播放视频?

•如何检测设备的朝向?

它们的答案都取决于 Cocoa 框架如何使用,而非具体采用的语言是什么——你关注的应该是背后的「我该做什么,为什么要这么做」,而不是简单的「具体怎么去写」——不同语言仅仅是一个写法不同而已,手册和网络上都可以查到,用多了自然掌握。

因此,对于一个已经掌握了 Objective-C 和 iOS 开发的人,迁移到 Swift 是几天就可以搞定的;而对于一个掌握了 Swift 和 iOS 开发的人,迁移到 Objective-C 也不会很困难。

至于选择哪个语言,我想说 Swift 代替 Objective-C 肯定是有原因的,必须承认 Objective-C 的很多语法的确很怪很繁杂(Objective-C 的啰嗦是出了名的),可能对编程语言的初学者不太友好,Swift 接受起来会稍微容易一些。但另一个事实是,目前 Swift 的文档、教程和代码还比较少,并且大部分都是关于语法的。虽然有一两个官方文档是关于如何从 Objective-C 切换到 Swift 的,也有一些 Swift 的示例代码,但和 iOS 开发这个庞大的体系比起来,覆盖面仍然很窄。这对于已经掌握 Objective-C 的开发者不是问题,但是对于什么都不会的初学者,看过 Swift 的文档之后能写一个类似 C 的控制台应用程序出来,但是很难写一个你自己想要的完整可用的 iOS App 出来。因此,基于你的情况,我还是倾向于推荐从 Objective-C 开始学起。

关于学习流程,建议以实践为主,看书为辅。可以先找本书了解下 Objective-C 的基本语法(我当时看的是这本:Objective-C基础教程 (豆瓣)),然后看 Apple 的官方教程来入门:马上着手开发 iOS 应用程序:介绍。等你把这个教程的内容基本上理解了,就开始尝试自己开发一个小程序,从最简单的视图开始,然后开始使用 table view,可以尝试模拟一下 iOS 中「设置」应用的界面。最重要的参考资料其实是 Apple 的官方文档(iOS Dev Center)。这里特别要表扬一下 Apple 的文档,写的还是很不错的,非常清楚详细。个人感觉看这些文档就足够了;如果你需要,可以再单独买一本书,比如我买了这本:Beginning iOS 7 Development: Exploring the iOS SDK: Jack ...。注意,各个 iOS 版本的 API 略有不同,目前来说最好选择对应 iOS 7 的教程。等你把 table view 完全用会了,剩下的就不需要我教了。

在这期间,你会遇到无数的问题和错误,你想做的很多事情书上是没有的,这时候要求助于网络。果断抛弃百度吧,直接用英文 Google 搜索,注意 Stack Overflow 里面的问题和回答。Stack Overflow 是一个程序员的问答社区,水平非常高(如果你有一个账号并且积分比较高,在很多国外公司的面试中甚至都是有加分的),基本上这一阶段你能遇到的所有问题在这里都能找到不错的答案。
分享到:
评论

相关推荐

    有了Swift,iOS开发者为何仍需掌握Objective-C?

    估计当时的参会者大多数都会有这样的想法在大脑里闪过:真正从长远角度来看,学习Objective-C还是Swift语言其实很不重要。Swift刚发布的时候有人说“这下所有人都回到零起点了”,实际上是外行的一个常见的误解。...

    the swift programming language. pdf free download

    Swift采用了C语言的高效性能和Objective-C的动态模型,使得Swift在阅读性和性能上都得到了极大的提升。 Swift采用了很多安全的编程模式,这使得编程变得更加简单、灵活和有趣。同时,Swift还引入了现代编程语言的很...

    iPhone开发

    iPhone开发是一门专注于苹果iOS平台的应用程序开发技术,它涉及使用Objective-C或Swift语言,以及iOS SDK进行软件开发。对于初学者来说,学习iPhone开发需要一定的编程基础,同时也要具备对苹果生态系统的兴趣和热爱...

    图像处理实战指南:从边缘检测到水印嵌入的关键算法解析

    内容概要:本文详细介绍了多种图像处理技术的实际应用和实现方法,涵盖了边缘检测、分形维数计算、霍夫直线检测、伪彩色增强、PCA降维、图像配准以及水印嵌入等多个方面。每种技术不仅提供了具体的Python代码示例,还分享了作者在实践中积累的经验和技巧。例如,边缘检测部分强调了Sobel算子的正确使用方法及其注意事项;分形维数计算部分展示了如何通过盒计数法进行实现;霍夫直线检测部分讨论了参数选择的影响;伪彩色增强部分介绍了基于LUT的颜色映射方法;PCA降维部分讲解了人脸识别的具体步骤;图像配准部分探讨了SIFT算法的应用;水印嵌入部分则深入剖析了DCT域的方法。 适合人群:具有一定编程基础并希望深入了解图像处理技术的开发者和技术爱好者。 使用场景及目标:适用于需要快速掌握图像处理核心技术的研究人员、工程师和学生。目标是帮助读者理解并能够独立实现常见的图像处理任务,如边缘检测、特征提取、图像融合、降维、配准和水印嵌入等。 其他说明:文中提供的代码片段均经过实际验证,可以直接用于实验环境。此外,作者还分享了许多实用的小贴士,如避免常见错误、优化性能等,有助于提高读者的实际操作能力。

    生成式AI入门:商业与技术领导者的指南

    本书《What Is Generative AI》由Kyle Stratis撰写,旨在为商业和技术领导者提供生成式人工智能(Generative AI)的基础知识。生成式AI是一种能够创造新内容的技术,包括图像、文本和视频,与传统的判别式AI不同,后者主要用于分类和回归任务。书中介绍了生成式AI的历史、发展以及现代架构,如变分自编码器(VAE)、生成对抗网络(GAN)和Transformer模型,并探讨了其在商业和创意领域的应用。作者强调,尽管生成式AI在推动增长、增强创造力和简化运营方面具有巨大潜力,但实施时也面临着伦理、法律和技术挑战。本书旨在为读者提供必要的知识和见解,以便他们能够评估生成式AI的投资回报率,并在日常生活中、商业活动或创意工作中有效利用这项技术。

    伍德里奇计量经济学计算机习题解答与资源

    《伍德里奇计量经济学计算机习题解答与资源》为学习者提供全面的习题解答与实用资源,涵盖R语言实现,帮助巩固计量经济学理论知识并提升实操能力。适合自学或辅助课程学习,助你高效掌握数据分析与建模技巧。

    基于深度学习的行人检测系统(YoloV3+Tensorflow).zip

    基于深度学习的系统

    Asp.Net CRM客户关系管理系统:企业信息化进程中的高效解决方案

    内容概要:本文详细介绍了Asp.Net CRM客户关系管理系统的功能和实现细节。该系统不仅涵盖了客户信息管理、日程安排等功能,还展示了如何通过C#代码实现这些功能。此外,文章强调了系统的二次开发能力和扩展性,如通过创建新的数据库表和编写相应代码来满足特定行业需求。系统采用三层架构,将客户生命周期、销售流程、团队协同等功能模块有机结合,形成一个完整的业务协同平台。文中还探讨了销售漏斗的状态机实现、实时消息推送、动态加载模块等高级功能,突出了ASP.NET在企业级业务系统开发中的优势。 适合人群:对CRM系统开发感兴趣的软件工程师、项目经理和技术主管。 使用场景及目标:适用于希望提升客户管理和内部协作效率的企业,尤其是那些需要定制化解决方案的企业。通过实施该系统,企业可以更好地管理客户资源,优化销售流程,提高工作效率,最终增强市场竞争力。 其他说明:文章提供了大量实际代码示例,帮助读者深入理解系统的工作原理和实现方法。同时,强调了系统设计中的关键技术决策,如使用状态模式、依赖注入、实时通信等,使读者不仅能学到具体的技术实现,还能掌握系统设计的思想。

    流固耦合仿真技术:流固耦合网格划分.zip

    流固耦合仿真技术:流固耦合网格划分.zip

    natsort-4.0.4-py2.py3-none-any.whl

    该资源为natsort-4.0.4-py2.py3-none-any.whl,欢迎下载使用哦!

    基于Qt与C++的温度湿度传感器上位机开发:串口通信、数据记录与超时提醒

    内容概要:本文详细介绍了一款基于Qt和C++开发的温度湿度传感器上位机程序。该程序实现了串口通信获取传感器数据、数据记录与自动保存、超时提醒等功能。具体功能包括:通过QSerialPort进行串口通信,获取温度和湿度数据;封装独立的串口通信处理类,便于二次开发;提供控制台调试窗口,用于实时显示和发送数据;利用QSettings实现配置自动保存;通过QTimer实现超时提醒;以及使用QDateTime生成带有时间戳的文件名,确保数据安全保存。此外,文中还介绍了开发环境、代码结构和一些常见问题及其解决方案。 适合人群:具有一定C++和Qt基础的开发者,尤其是从事物联网、嵌入式开发的技术人员。 使用场景及目标:适用于需要开发温度湿度传感器上位机的应用场景,如智能家居、工业监控等。主要目标是帮助开发者理解和掌握如何通过Qt和C++实现传感器数据的采集、处理和展示。 其他说明:文中提供了详细的代码片段和解释,有助于读者更好地理解每个功能的具体实现方法。同时,文中还提到了一些常见的开发陷阱和优化建议,为实际项目开发提供了宝贵的实践经验。

    西门子S7-200PLC与MM420变频器三种控制方式详解及应用

    内容概要:本文详细介绍了西门子S7-200PLC(224XP型号)与MM420变频器之间的三种控制方式:数字量控制、模拟量控制以及USS通讯控制。首先,数字量控制通过PLC的开关量输出控制变频器的不同预设速度,涉及参数设置如P0701和P0702。其次,模拟量控制利用PLC自带的模拟量输出模块进行频率调节,需注意量程转换和参数P0756的设置。最后,USS通讯采用西门子专用协议实现复杂控制,强调了初始化参数、轮询机制和状态互锁的重要性。此外,文中还提供了关于MCGS触摸屏的应用技巧,如变量绑定和实时数据显示方法。 适合人群:从事工业自动化领域的工程师和技术人员,尤其是熟悉西门子PLC和变频器产品的使用者。 使用场景及目标:适用于希望深入了解PLC与变频器联合控制系统的设计与实现的技术人员。主要目标是在实际工程项目中灵活运用这三种控制方式,提高系统的可靠性和效率。 其他说明:文中附带了详细的代码片段和调试建议,帮助读者更好地理解和实践相关技术。同时提醒读者关注参数设置的一致性和安全性,以避免潜在的风险。

    流变学仿真方法:流变学仿真结果分析.zip

    流变学仿真方法:流变学仿真结果分析.zip

    基于STM32F103RCT6的西门子PLC 224XP/226改造:双串口DMA与指令系统实现

    内容概要:本文详细介绍了将西门子PLC 224XP和226型号主控替换为STM32F103RCT6的改造项目。主要内容涵盖硬件选型、双串口DMA传输配置、PLC指令系统的实现、浮点运算处理、密码保护机制以及协议兼容等方面。文中提供了丰富的代码示例和技术细节,如GPIO复用配置、USART1和USART3的DMA环形缓冲配置、浮点数比较指令处理、三级密码验证状态机、S7协议读取请求处理、梯形图编译器的状态机构建等。 适合人群:具备嵌入式开发经验,熟悉STM32和PLC编程的技术人员。 使用场景及目标:适用于希望深入了解PLC改造项目的工程师,旨在掌握如何利用STM32实现高效稳定的PLC功能替代,提高工业控制系统性能。 其他说明:作者分享了许多实际开发中的经验和技巧,如DMA环形缓冲配置、浮点运算优化、协议兼容处理等,有助于读者更好地理解和应用相关技术。

    adnbvjasdbsdvbfs

    sdgasdfg

    口罩机自动化项目:基于三菱FX3U PLC与威纶触摸屏的详细解析及应用

    内容概要:本文深入剖析了一个完整的口罩机自动化项目,涵盖了从硬件选型、电路设计到软件编程的各个方面。主要内容包括三菱FX3U PLC的梯形图编程、威纶触摸屏的界面设计、伺服电机参数调整、安全回路设计以及详细的IO表规划。文中不仅提供了具体的代码实例和技术细节,还分享了许多实际调试过程中积累的经验教训,如伺服电机抖动问题的解决、急停按钮的正确连接方式、关键传感器的输入点分配等。此外,作者还强调了装配图和调试记录的重要性,指出这些资料对于理解和优化整个系统的性能至关重要。 适合人群:从事工业自动化领域的工程师和技术人员,尤其是那些希望深入了解PLC编程和触摸屏应用的人群。 使用场景及目标:适用于正在开发或维护类似自动化设备的技术团队,帮助他们提高系统的稳定性和生产效率。通过对本文的学习,读者能够掌握如何将理论知识应用于实际项目中,避免常见的设计和调试误区。 其他说明:文章最后提供了一个完整的项目资料包下载链接,包含了所有相关文件和调试记录,方便读者进行实践操作。

    全开源淘客系统的Go-PHP-Vue技术栈实现与优化

    内容概要:本文深入探讨了一个全开源淘客系统的实现细节和技术优化。系统采用Go语言重构淘宝联盟API网关,处理商品搜索接口的核心逻辑,确保参数签名安全、HTTP请求稳定以及数据格式转换正确。数据库设计方面,使用MySQL存储佣金结算数据,利用JSON类型保存结算规则快照,防止规则变更影响历史数据。前端部分基于Vue.js构建佣金日历组件,强调数据驱动UI和事件冒泡处理交互。部署环节涉及SSL证书链的手动更新,确保API通信的安全性和稳定性。此外,系统还提供了详细的错误码设计、调试工具、订单同步服务、SDK封装、热更新通道等功能,旨在降低开发和运维难度,提高系统的可扩展性和易用性。 适合人群:具备一定编程基础的技术人员,尤其是对淘客系统感兴趣的开发者。 使用场景及目标:适用于希望搭建高效、稳定的淘客系统的个人或团队。主要目标是帮助用户理解淘客系统的架构设计和技术实现,提供实际操作指导,减少开发和运维中的常见问题。 其他说明:文中提到的系统不仅关注技术实现,还注重用户体验和系统稳定性,提供了丰富的调试工具和详细的文档支持。

    CursorUserSetup-x64-0.48.8

    CursorUserSetup-x64-0.48.8

    电子硬件基于2025年行业动态的课程设计项目资源汇总:涵盖物联网开发、电机控制及传感器融合系统

    内容概要:本文档为电子硬件课程设计提供了全面的项目资源,涵盖典型课程设计项目示例、开源项目资源库、开发工具与文档以及拓展学习平台。典型项目包括物联网综合开发平台(如ESP32主控+墨水屏交互系统)、电机驱动与控制项目(如STM32F4系列开发板的PWM调速算法)、传感器融合系统(如PM2.5检测仪)。开源项目资源库列举了多个项目的核心技术及其适用场景,如CD4047逆变器设计适用于电源系统课程设计。开发工具与文档部分介绍了EDA工具包、编程框架等,如重庆大学硬件综合设计实验包、STM32-V5开发套件。拓展学习平台则推荐了硬件开发社区和在线课程资源。最后给出了项目设计建议,包括开发流程和文档规范。; 适合人群:电子工程专业学生、电子硬件初学者、高校教师。; 使用场景及目标:①为电子硬件课程设计提供详细的项目参考,帮助学生完成课程作业;②为教师提供教学资源,辅助课堂教学;③为初学者提供学习路径,便于自学入门。; 其他说明:本文档结合了2025年最新行业动态和教学实践,确保提供的资源具有前沿性和实用性。文档强调了从需求分析到系统联调的完整开发流程,并对文档规范提出了具体要求,确保项目实施的规范性和可追溯性。

    2024300928刘君浩.rar

    2024300928刘君浩.rar

Global site tag (gtag.js) - Google Analytics