《iOS应用开发》——2.1节Objective-C编程语言

简介:

本节书摘来自异步社区《iOS应用开发》一书中的第2章,第2.1节Objective-C编程语言,作者【美】Richard Warren,更多章节内容可以访问云栖社区“异步社区”公众号查看

2.1 Objective-C编程语言
iOS应用开发
Objective-C语言是一种简洁的、优雅的、对C语言进行了面向对象设计的扩展。严格意义上来说,它是C语言的超集。你可以在Objective-C项目中使用任何有效的C语言代码。这让我们除了Objective-C和C框架库以外,还可以使用大量的第三方代码库。Objective-C的大多数面向对象的语法都是从Smalltalk借鉴而来。Smalltalk是最早的面向对象语言之一,它设计得很简单,很容易被实现并且很容易学会。尽管它的历史很悠久,Smalltalk仍然还是市场上最具创新性的编程语言。很多现代的计算机编程语言仅仅是重新开发了最初在Smalltalk中使用过的技术。Objective-C也从那里吸收了很多设计:一个高度动态、极富表达力的基本组件,它是所有东西建立的基石。

作为一个动态语言,Objective-C运行时才将方法和参数绑定,而不是在编译时。你不需要知道对象的类。你可以向任何类发送任何消息。这样通常就会极大地简化代码,但是,如果你给对象发送了一个它无法理解的消息,程序运行时就会崩溃。

幸运的是,Xcode会提醒你一些没有被声明的消息。此外,你可以将对象声明为静态类型,这样编译器会对代码进行额外的分析并产生警告。Objective-C还是一种具有高度反射能力的语言,它能观察和修改自身。在运行时,我们能够检查任何类,并且能访问它的方法和变量等。我们可以修改类,通过类别(categories)或者扩展(extension)来加入自己的方法,甚至可以在运行时动态的重定义方法。

最后,Objective-C,尤其是Cocoa和Cococa Touch框架,使用了许多设计模式来减少不同部分代码的耦合性。耦合性越低的代码越容易修改和维护。修改程序的一部分不会影响代码其他的任何部分。然而,如果你不熟悉这些设计模式,它们则会让代码变得晦涩难懂。

这些设计模式包括我们在程序中使用的模型-视图-控制器(MVC)框架、用委托代替子类、使用键-值编码(KVC)用于高度动态读取对象的实例变量、键-值观察(KVO)用于监控对这些变量的任何改变,以及为应用程序提供大量通知的一个程序框架。

当掌握了Objective-C语言后,你就会发现你常常能够使用比想象中更少的代码来解决更加复杂的问题,无需像传统的程序语言那样使用那么多的代码,例如使用C++或者Java编程语言。我们能够更加仔细地定制解决方案来适应要解决的问题,而不是生搬硬套。

在设计Cocoa Touch框架和Xcode的开发工具时苹果公司都有很好地应用了Objective-C的灵活性。这些工具使得通用的任务变得易于完成,而不需要很多重复的代码,并且需要时还能在其他情况中使用。

本章后面的内容讲述了Objective-C编程语言。但这些并不代表了全部,关于Objective-C就足以写一整本书。事实上,确实有很多人写了这样的书。你有可能想要看这些书。或者阅读苹果公司的开发文档中的Objective-C编程语言。这份指南提供了你可能需要的全部细节。不同的是,本章是“内容精粹”的版本,它为我们起步提供了足够的知识,并且指出了很多关键特征和常见的错误。

虽然并不需要之前就具有面向对象编程的开发经验,但是我还是假设你们对其他类C语言的编程语言有了一个基本的了解(例如C、C++或者Java)。如果下面的例子让你感到非常困惑,你可能需要在继续之前温习一下C语言技能了。如果你可以正确地给出输出结果1,那么,就让我们继续。

#include <stdio.h>
int main (int argc, const char * argv[]) {
     int total = 0;
     int count = 0;
     for (int y = 0; y < 10; y++) {
          count++;
          total += y;
     }
     printf("Total = %d, Count = %d, Average = %1.1f",
             total,
             count,
             (float)total / (float)count);
     return 0;
}

1正确的答案是“Total = 45,Count = 10,Average = 4.5”。如果你能编译并且运行这个程序那就更好了。

相关文章
|
编译器 API iOS开发
iOS 代码规范格式 Objective-C(下)
iOS 代码规范格式 Objective-C(下)
187 0
|
iOS开发 容器
iOS 代码规范格式 Objective-C(上)
iOS 代码规范格式 Objective-C
382 0
iOS 代码规范格式 Objective-C(上)
|
机器学习/深度学习 API iOS开发
【IOS 开发】Objective-C Foundation 框架 -- 字符串 | 日期 | 对象复制 | NSArray | NSSet | NSDictionary | 谓词(一)
【IOS 开发】Objective-C Foundation 框架 -- 字符串 | 日期 | 对象复制 | NSArray | NSSet | NSDictionary | 谓词(一)
140 0
|
存储 自然语言处理 Java
【IOS 开发】Objective-C Foundation 框架 -- 字符串 | 日期 | 对象复制 | NSArray | NSSet | NSDictionary | 谓词(二)
【IOS 开发】Objective-C Foundation 框架 -- 字符串 | 日期 | 对象复制 | NSArray | NSSet | NSDictionary | 谓词(二)
218 0
|
Java iOS开发
【iOS 开发】Objective - C 面向对象 - 方法 | 成员变量 | 隐藏封装 | KVC | KVO | 初始化 | 多态(二)
【iOS 开发】Objective - C 面向对象 - 方法 | 成员变量 | 隐藏封装 | KVC | KVO | 初始化 | 多态(二)
116 0
|
存储 安全 C语言
【iOS 开发】Objective - C 面向对象 - 方法 | 成员变量 | 隐藏封装 | KVC | KVO | 初始化 | 多态(一)
【iOS 开发】Objective - C 面向对象 - 方法 | 成员变量 | 隐藏封装 | KVC | KVO | 初始化 | 多态(一)
161 0
|
SQL 前端开发 JavaScript
2021最受欢迎的编程语言排行:苹果编程语言Objective-C被Swift取代
苹果公司的Objective-C最终退出了Tiobe跟踪的流行编程语言的前20名,但是「恐龙」语言却获得了意想不到的推动,Swift语言取代Objective-C的时代要来了。
285 0
2021最受欢迎的编程语言排行:苹果编程语言Objective-C被Swift取代
|
存储 缓存 Java
Android 和 iOS 孰优孰劣:真实应用开发过程告诉你答案
随便搜索一下“Android vs. iOS”,都会出现很多关于哪个平台更好的争论,大多数的争论点都是关于市场占有率、易用性和设备分化等问题。当然也有一些“以开发者的角度”去比较这两个平台的文章,但是很少有从技术上做深入的比较,通常也只是用一个简单的示例应用介绍一些基本的特性。缺少这种深入的比较其实是有原因的:一个公司要做一个足够复杂的移动应用,通常需要一个人或团队做Android,另外一个人或团队做iOS。这两个平台使用不同的编程语言(Java和Objective-C),提供不同的SDK,使用不同的开发工具,所以人力资源分配上各做各的平台也就不奇怪了。
262 0
Android 和 iOS 孰优孰劣:真实应用开发过程告诉你答案
|
自然语言处理 Go iOS开发
iOS开发者知识普及,Swift 挑战 Objective-C,谁会笑到最后?
如果你的公司也正计划跟随 iOS 软件开发,那么你需要作出一个至关重要的决定。你需要为你的产品选择合适的技术组合。你的目标是什么?如果是原生应用开发而不是跨平台软件,你会选用哪种编程语言?久经考验的 Objective-C 还是 Swift?