

先来几段代码,Dog类的.h .m文件 和main.m dog.h #import Foundation/Foundation.h@interface Dog : NSObject{ int _ID; NSString *_name; int _age; float _price;}//凡是用initXXX开头的都是构造函数//init方法实际上没有什么特别的,只是遵循命名约定的普
先来几段代码,Dog类的.h .m文件 和main.m
dog.h
#import@interface Dog : NSObject { int _ID; NSString *_name; int _age; float _price; } //凡是用initXXX开头的都是构造函数 //init方法实际上没有什么特别的,只是遵循命名约定的普通方法 -(id)init; -(id)initWithID:(int)newID; -(id)initWithID:(int)newID andAge:(int)newAge; -(id)initWithID:(int)newID andAge:(int)newAge andPrice:(int)newPrice; @property int ID; @property NSString *name; @property int age; @property float price; @end
#import "Dog.h"
@implementation Dog
-(id)init
{
return [self initWithID:1001];
}
-(id)initWithID:(int)newID
{
return [self initWithID:newID andAge:20];
}
-(id)initWithID:(int)newID andAge:(int)newAge
{
return [self initWithID:newID andAge:newAge andPrice:80.0];
}
-(id)initWithID:(int)newID andAge:(int)newAge andPrice:(int)newPrice
{
self=[super init];
if(self){
_ID=newID;
_age=newAge;
_price=newPrice;
}
return self;
}
@synthesize ID=_ID;
@synthesize name=_name;
@synthesize age=_age;
@synthesize price=_price;
@end
#import#import "Dog.h" #import "NSString+ReverseString.h" #import "Person.h" int main(int argc, const char * argv[]) { @autoreleasepool { Dog *dog1=[[Dog alloc ] init]; dog1.name=@"syj"; NSLog(@"%@",[dog1 name]); [dog1 setName:@"ldusyj"]; NSLog(@"%@",dog1.name); } return 0; }
先看一下:
@property
@property int age;
等同于 -setAge:(int)newAge;
-(void)age;
@synthesize
@synthesize age=_age;
等同于: -(void)setAge:(int)newAge{
age=newAge;
}
-(int)age{
return age;
}
在看一下点:1.
dog1.name=@"syj";
等同
[dog1 setName:@"syj"];
NSLog(@"%@",dog1.name);
NSLog(@"%@",[dog1 name]);
注意:
-(void)setAge:(int)newAge
{
NSLog(@"调用了setAge方法:%i",newAge);
self.age = newAge;
}不能在setAge:方法中使用self.age = newAge,相当于在setAge:方法中调用[self setAge:newAge ], 出现死循环
-(int)age
{
NSLog(@"调用了age方法:%i",_age);
return self.age;
}