学习ObjectiveC--第六天.doc

  1. 1、本文档共6页,可阅读全部内容。
  2. 2、有哪些信誉好的足球投注网站(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
  3. 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  4. 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
教程详细: ????? 技术:Objective-C??? 难度:初学者?? ? 完成时间:20-30分钟 ? 在今天的教程里,我们将会学习到类别,以及如何使用类别来扩展Cocoa-Touch类的功能。这是我们学习Objective-C系列的最后一章了,就让我们也会回顾一下目前所学到的知识,还有,探讨一下日后开发Objective-C或iphone应用程序的一些技巧。 类别 ????? 那么,什么是类别呢?大量的Objective-C系列教程会忽略掉类别,这是一个非常有用的语言功能。通过消除不必要的子类,类别有助于保持代码的清洁。从我们已经了解到的,如果我们有一个NSString对象,然后要添加一些函数去做一些事情,例如添加一个可以把字符串中’a’替换成’4’,这样我们可以继承NSString并且添加自己的方法。当我们创建了Car类,我们也可以看到这子类。之前我过叫大家在这教程的最后,创建这样的一个Car子类,所以你可以在基类添加函数了,但在某些情况下,类别提供一个很好的方法去为一个类添加额外的方法: ?? 类别允许我们为一存在的类添加方法,这样,我们程序中所有类的实例可以获得这样的功能了。例如,我们有100个NSString对象在应用程序里,但你想拥有一个自定义子类,所以每个NSString就得拥有一个额外的方法了(例如reverseString)。有了类别,我们可以轻松地把方法加进类别里,并且所有的实例会允许被使用新方法。语法是和子类的很不相同的,并且类别不会允许你去使用实例变量。然而,方法重写是允许的,但这要慎用,不到万不得已之时勿用。 语法 ?? 类别的语法形式和类相似,他们中也分别有一个接口和一个实现。接口看起来是这样的: 1: @interface ClassNameHere (category) 2: 3: // method declaration(s) 4: 5: @end 6: 7: The implementation looks like this; 8: 9: @implementation ClassNameHere (category) 10: 11: // method implementation(s) 12: 13: @end 举例 ?? 很简单对吧?好吧,让我们看看一个例子吧。我们将要创建一个用来实现string反转的方法。虽然这方法没多大实际用处,但用来做什么并不是重点。你应该已经知道接口的形式了,但这已经存在的了: 1: @interface NSString (reverse) 2: 3: -(NSString *) reverseString; 4: 5: @end 那怎样创建实现呢? 1: @implementation NSString (reverse) 2: 3: -(NSString *)reverseString { 4: 5: } 6: 7: @end ? 接下来,我们将需要添加一些代码来让string反转。由于我们将为NSString类添加方法,我们得自我引用字符串了。现在,为了反转字符串,我们需要一个新的临时字符串对象。我们会用一个循环去反转这字符串,每次寻找一个字符添加到反转字符对象上。代码如下: 1: int length = [self length]; 2: NSMutableString *reversedString; 3: 4: reversedString = [[NSMutableString alloc] initWithCapacity: length]; 5: 6: while (length 0) { 7: [reversedString appendString:[NSString stringWithFormat:@%C, [self characterAtIndex:--length]]]; 8: } 9: 10: return [reversedString autorelease]; ? 这种方法是相当简单的,我们通过每次循环反转字符串中的字符。我们追加使用stringWithFormat和字符标识符。当我们调用这方法,不仅返回长度整数,并且从字符串删除它,循环

文档评论(0)

dashewan + 关注
实名认证
内容提供者

该用户很懒,什么也没介绍

1亿VIP精品文档

相关文档