加号 是类的方法,可以通过类直接调用(和Java中的static比较类似)。
减号 是对象的方法,通过实例化的对象对减号方法进行调用(类似Java中的普通方法)。
一个例子(减号方法较多可以忽略, 一两个进行对比)
#import <Foundation/Foundation.h>
@interface Person : NSObject
{
int iid;
int age;
}
-(id)init;
-(id)init:(int)newIid andAge:(int)newAge;
-(void)setIid:(int)newId;
-(int)getAge;
-(void)setAge:(int)NewAge;
-(int)getAge;
+(int)maxAge;
+(id)person;
@end
@implementation Person
-(id)init
{
return [self init:3 andAge:4];
}
-(id)init:(int)newIid andAge:(int)newAge
{
self=[super init];
if(self){
iid=newIid;
age=newAge;
}
return self;
}
-(void)setIid:(int)newId
{
iid=newId;
}
-(int)getIid
{
return iid;
}
-(void)setAge:(int)newAge
{
age=newAge;
}
-(int)getAge
{
return age;
}
+(int)maxAge
{
return 150;
}
+(id)person
{
return [[[self class] alloc]init ];
}
@end
int main(int arac,const char *arav[])
{
NSAutoreleasePool *pool=[[NSAutoreleasePool alloc] init];
Person *person1=[Person person];//[[Person alloc] init];
NSLog(@"%d,%d",[person1 getIid],[person1 getAge]);
[pool drain];
int maxAge=[Person maxAge];
NSLog(@"%d",maxAge);
return 0;
}
可看到在调用加号方法时,直接用[类名 方法名]直接调用
减号方法,先是对象,然后在通过[对象名 方法名]调用