分类ios开发之基础篇objective-中selfsuper.pdfVIP

  • 1
  • 0
  • 约6.37千字
  • 约 4页
  • 2025-09-01 发布于北京
  • 举报

分类ios开发之基础篇objective-中selfsuper.pdf

Objective-C中self和super

分类:iOS开发之基础篇

2011-11-1915:40140人阅读评论(0)收藏

在Objective-C中的类实现中经常看到这两个关键字”self”

和”super”,以以前oop语言的经验,拿c++为例,self相当于this,

super相当于调用父类的方法,这么看起来是很容易理解的。以下面的

代码为例:

@interface:NSObject{NSString*name;}-(void)

setName:(NSString*)yourName;@end@interface

Me:{NSUIntegerage;}-(void)setAge:(NSUInteger)

age;-(void)setName:(NSString*)yourNameandAge:(NSUInteger)

age;@end@implementationMe-(void)

setName:(NSString*)yourNameandAge:(NSUInteger)age{[self

setAge:age];[supersetName:yourName];}@endintmain(intargc,

char*argv[]){NSAutoreleasePool*pool=[[NSAutoreleasePoolalloc]

init]Me*me=[[Mealloc]init];[mesetName:@asdf

andAge:18];[merelease];[pooldrain];return0;}

上面有简单的两个类,在子类Me中调用了自己类中的setAge和

父类中的setName,这些代码看起来很好理解,没什么问题。然后我

在setName:andAge的方法中加入两行:

NSLog(@selfclassis%@,[selfclass]);NSLog(@superclass

is%@,[superclass]);

这样在调用时,会打出来这两个的class,先猜下吧,会打印出什么?按

照以前oop语言的经验,这里应该会输出:

selfsclassisMesupersclassis

但是编译运行后,可以发现结果是:

selfsclassisMesupersclassisMe

self的class和预想的一样,怎么super的class也是Me?

self是类的隐藏的参数,指向当前当

文档评论(0)

1亿VIP精品文档

相关文档