`

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函数的整数值,此函数计算字符串的长度,并输出单词本身及其长度。

分享到:
评论

相关推荐

Global site tag (gtag.js) - Google Analytics