`

Objective-C开发——OOP的一个关键概念:间接

阅读更多

在编程行业有句老话,大意是:“只要多添加一个间接层,计算机科学中就没有解决不了的问题。”间接这个词的含义很简单——不在代码中直接使用某个值,而是使用指向该值的指针。下面是一个真是的例子:你可能不知道自己最喜欢的比萨饼店的电话号码,但你知道可以查阅字典号码薄来找到它,那么,使用电话号码薄就是一种间接的形式。

在编程时,可以利用多层间接,如编写一段代码来查询其他代码,而后者又可以访问另一层代码。你大概拨打过技术支持热线。你对支持员工说明了问题,他将你转接到能够处理此问题的具体部门。该部门员工又将你转接到下一级技术人员,他可帮你解决问题。如果你和我们一样,在这时发现自己拨打了错误的号码,那么你不得不转向另一部门寻求 帮助,这种推诿就是一种形式的间接。幸运的是,计算机的耐心是无限的,为了找到答案,能够接受多次差遣。

关键词:变量和间接

基本变量就是间接的一种实际应用。考虑下面这个输出数字1到5的小程序。

#import <Foundation/Foundation.h>

 

int main(int argc, const char *argv[])

{

NSLog(@”Thenumbers from 1 to5:”);

int i;

for(i=1;i<=5;i++){

NSLog(0);

}//main

假设你想更新这个程序,使其输出数字1到10,那么你需要更改两处代码:

NSLog(@”The numbers from 1 to10:”);

i=1;i<=10;i++

 

这样修改程序显然不需要太多技巧,你可以用简单的搜索替换操作来完成,而且只需改变两处。然而,在比较大的程序中,执行搜索和替换就麻烦多了,仅仅是将5替换为10,我们也必须小心:毫无疑问,有些情况下数字5是与此无关的,所以不应该改为10.

解决这个问题就是变量的目的。不必直接在代码中修改上限循环值(5或10),我们可以将这个歌数字放到变量中,于是添加一个间接曾,这样就能够解决问题。添加变量后,就是告诉程序“去查看名为count的变量,它会说明进行多少次该循环”,而不是“执行5次循环”。现在程序如下:

#import <Foundation/Foundation.h>

int main(int argc, coust char *argv[])

{

int count =5;

NSLog(@”Thenumbers from 1 to %d:”, count);

Int I;

For(i=1;i<=count;i++){

NSLog(@”%d\n”, I );

} NSLog(@”Thenumbers from 1 to5:”);

return(0)

}//main

通过添加变量,代码现在更加干净,并且更易于扩展。为了修改循环值,她们不必仔细查看程序中使用的每个数字5,以确定是否需要修改,而是只需修改count变量就可获得期望的结果。

使用文件名的间接

文件是另一种间接的示例。这个重要程序是新web2.0公司站点Length-o-words.com的关键技术。

#import <Foundation/Foundation.h>

int main(int argc, coust char *argv[])

{

coust char*words[4] = { “aardvark”, “abacus”, “allude”, “zygote” };

int wordCount =4;

 

int i;

for( i=0; i< wordCount; i++){

NSLog( @”%sis %d characters long “, words[ I ], strlen(words[i]));

}

return(0);

 

}//main

 

for循环可在任何时候确定要处理words数组中的哪个单词。循环内的NSLog()函数使用%S格式说明符来输出单词。之所以使用%S,是因为words是C字符串数组,而不是@”NSString”对昂。%d格式说明符取strlen90函数的整数值,此函数计算字符串的长度,并输出单词本身及其长度。

分享到:
评论

相关推荐

    objective-c基础教程

    - **Xcode集成**: Xcode是苹果官方提供的集成开发环境(IDE),它集成了Objective-C的编辑器、编译器和调试器等功能,为开发者提供了一个高效便捷的开发平台。 #### 三、Objective-C语言特点 Objective-C继承了C语言...

    Objective-C基础教程 中文 PDF 清晰版 [31M]

    3.4 Objective-C中的OOP34 3.4.1 @interface部分34 3.4.2 @implementation部分38 3.4.3 实例化对象40 3.4.4 扩展Shapes-Object41 3.5 小结43 第4章 继承45 4.1 为何使用继承45 4.2 继承语法48 4.3 继承的...

    这是一个基于Objective-C语言的基础案例集。旨在用于给初学者快速了解Objective-C语言的语法。.zip

    1. **Objective-C的起源与特性**:Objective-C是在C语言的基础上扩展的,增加了消息传递机制和面向对象特性。它的语法包含C语言的所有部分,同时引入了类、继承、多态等OOP概念。 2. **类与对象**:在Objective-C中...

    Objective-C基础教程(Learn Objective-C)随书源码下载

    在深入探讨这些源码之前,让我们先了解一下Objective-C的关键概念。 1. **面向对象编程基础**: Objective-C是C语言的超集,它扩展了C语言,加入了面向对象的特性。面向对象编程(OOP)的核心概念包括类、对象、...

    [Objective-C编程(第6版)]Programming in Objective-C

    - **继承与多态**:Objective-C支持单继承,一个类可以从另一个类继承属性和方法。多态是指同一个方法可以在不同类的对象上表现出不同的行为。 - **封装**:封装是指将数据和操作数据的方法封装在一起,隐藏对象的...

    0基础iOS开发学习计划Objective-c语言内容概述.doc

    - **表达式与流程控制**:Objective-C中的表达式和流程控制语句(如`if`, `for`, `while`等)与C语言相似。这些语句用于控制程序的执行流程。 #### Objective-C面向对象特性 面向对象编程(OOP)是Objective-C的...

    Objective-C - Learning Objective-C 2.0 Second Edition

    第四章《Your First Objective-C Program》通过一个简单的示例程序,向读者展示了如何构建和运行一个基本的Objective-C应用程序。这将帮助初学者熟悉Objective-C的基本语法和编译过程。 #### 六、Objective-C语言...

    Object-Oriented Programming with Objective-C

    - **类与对象**:Objective-C中的类定义了对象的行为和属性,对象是类的一个实例。 ##### 3. 面向对象编程基础 - **封装**:封装是将数据和操作数据的方法绑定在一起,对外隐藏具体的实现细节。Objective-C通过类和...

    objective-c 面向对象编程

    Objective-C是一种基于C语言的面向对象编程(OOP)语言,尤其在苹果的iOS和macOS开发中占据核心地位。它的设计目标是扩展C语言,使其支持类、消息传递和其他面向对象特性。以下是对Objective-C面向对象编程的详细...

    基于Objective-C的面向对象编程

    6. **继承(Inheritance)**:Objective-C支持单继承,一个类可以从另一个类继承属性和方法。子类可以扩展或重写父类的方法,实现代码复用和功能扩展。 7. **分类(Categories)**:Objective-C允许给已有的类添加...

    The Objective-C Programming Language-2006.pdf

    4. **与C语言兼容**:Objective-C与C语言完全兼容,可以在同一个源文件中混合使用C和Objective-C代码。 5. **丰富的库支持**:Objective-C拥有丰富的标准库支持,包括对Cocoa和Cocoa Touch框架的支持,这使得开发iOS...

    Objective-C程序设计 第6版

    在Objective-C中,内存管理一直是一个重要的主题。在第6版中,将详细介绍引用计数机制,这是管理对象生命周期的核心技术。此外,还会涉及现代Objective-C内存管理方法,包括自动引用计数(ARC)技术,它通过编译器...

    IPhone Objective-C入门

    - **混合C语言特性**:Objective-C保留了C语言的所有特性,同时添加了面向对象的功能。 #### 五、开发环境搭建 为了开始使用Objective-C进行开发,你需要准备以下工具: - **Xcode**:Xcode是苹果提供的官方集成...

Global site tag (gtag.js) - Google Analytics