声明方法的开头为正号(+)的通知编译器表示为类方法class method,类方法属于类对象而不是类的实例对象,通常用于创建新的实例。我们称这种用来创建新对象的类方法为工厂方法 factory method。

如果某个方法所实现的是很通用的功能,比如创建一个实例对象或访问一些全局类数据,最好声明为类方法。

stringWithFormat:是一个类方法。

例如:  

NSString *str = [NSString stringWithFormat:@"%f", value];

直接以类NSString调用stringWithFormat方法。

alloc 是一个类方法。

下面是一下类方法举例:

+ (UIColor *)redColor;        // 1.0, 0.0, 0.0 RGB 
+ (UIColor *)greenColor;      // 0.0, 1.0, 0.0 RGB 
+ (UIColor *)blueColor;       // 0.0, 0.0, 1.0 RGB
self.textColor = [UIColor whiteColor];
 
+(NSString *)currentLanguage;//声明
 
//实现
+(NSString *)currentLanguage{
    NSUserDefaults *def = [NSUserDefaults standardUserDefaults];
    NSArray* languages = [def objectForKey:@"AppleLanguages"];
    return  [languages objectAtIndex:0];
}

//调用
NSString *lan = [NSDate currentLanguage];

 

************************************************************

声明方法的开头为负号(-)的通知编译器表示为实例方法;在指定的对象实例中起作用。

- (NSString *) stringFromMD5;
NSString * password=@"123456";
NSString *strMd5=[password stringFromMD5];  //在指定的对象实例中起作用
 
-(NSString *) stringWithFormat_yyyy_MM_dd;//声明
//实现
-(NSString *) stringWithFormat_yyyy_MM_dd{
    return [self stringWithFormat:@"yyyy-MM-dd"];
}
//调用
NSString * strDate=[[NSDate date] stringWithFormat_yyyy_MM_dd];
 
-(NSString *)chineseStringDate;
 
-(NSString *)chineseStringDate{
    return [self stringWithFormat:@"yyyy年M月d日"];
}
NSString * str = [self chineseStringDate];//2014年12月27日