#import <Foundation/Foundation.h>
@interface ClassA : NSObject
{
int x;
}
@property int x; //用编译器的方法实现存取器
/* 自定义实现存取器方法声明
-(void)setX:(int)num;
-(int)x;
*/
/*重载dealloc函数.
要释放成员变量所占用的内存,应该重载dealloc函数,
而不是release函数,release函数通过掉用dealloc函数完成清理工作.*/
-(void)dealloc;
/*重载init函数.
*/
-(id)init;
@end
@implementation ClassA
@synthesize x; //用编译器的方法实现存取器
/* 自定义实现存取器方法定义
-(void)setX:(int)num
{
x=num;
}
-(int)x
{
return x;
}
*/
-(id)init
{
self=[super init];
x=100;
return self;
}
-(void)dealloc
{
NSLog(@"Dealloc called");
[super dealloc];
}
@end
int main (int argc, const char * argv[]) {
NSAutoreleasePool * pool = [[NSAutoreleasePool alloc] init];
ClassA *pa=[[ClassA alloc] init];
/*存取器使用方法一
pa.x=5;
NSLog(@"pa.x=%i",pa.x);
*/
/*
存取器使用方法二
[pa x:5];
NSLog(@"pa.x=%i",pa.x);
[pa release];
*/
/*
使用id来操作对象指针pa
id value=pa;
NSLog(@"pa.x=%i",[value x]);
*/
/*
RTTI练习
if ([pa isMemberOfClass:[ClassA class] ]==TRUE) {
NSLog(@"pa is a instance of classA");
}
if([pa respondsToSelector:@selector(draw)]==TRUE)
[pa draw];
else
NSLog(@"pa hasn't the fun of draw!");
*/
/*
异常处理练习
@try {
[pa draw];
}
@catch (NSException * e) {
NSLog(@"Caught %@%@",[e name],[e reason]);
}
@finally {
NSLog(@"Here");
}
*/
[pool drain];
return 0;
}