定義方法
在OC中,定義一個方法,分為聲明和實現,聲明要寫在@interface
中,而實現要寫在@implementation
中
編寫方法的規律總結
- 確定函數名稱
- 確定形參
- 確定返回值
- 確定返回值類型
方法的聲明
- 無參無返回值對象方法
@interface User : NSObject
{
@public
char * _name;
int _age;
}
- (void)about;
@end
- 無參有返回值的對象方法
- (char *) write;
- 有參有返回值對象方法
- (int) call: (int) number;
- 多個參數有返回值對象方法
- (int) send:(int)number :(char *) content;
- 帶標簽的多參數對象方法
- (int) sendMsgWithNum:(int)number andContent:(char *) content;
方法的實現
- 無參無返回值對象方法
@implementation User
- (void)about{
NSLog(@"about方法實現");
}
@end
- 無參有返回值的對象方法
- (char *) write{
return "hello";
}
- 多個參數有返回值對象方法
- (int) send:(int)number :(char *) content{
NSLog(@"發送短信【%s】給%i",content,number);
return 1;
}
- 帶標簽的多參數對象方法
- (int) sendMsgWithNum:(int)number andContent:(char *) content{
NSLog(@"發送短信【%s】給%i",content,number);
return 1;
}
調用方法(給對象發送消息)
- 調用無參無返回值的對象方法
User * user = [User new];
[user about];
- 無參有返回值的對象方法
char * str = [user write];
NSLog(@"write=%s",str);
- 有參數有返回值的對象方法
int result = [user call:123];
NSLog(@"返回值 %i",result);
- 多個參數有返回值對象方法
result = [user send:123 :"hello"];
NSLog(@"發送短信結果 %i",result);
- 帶標簽的多參數對象方法
result = [user sendMsgWithNum:1234 andContent:"world"];
NSLog(@"發送短信結果 %i",result);
類方法的聲明和實現
- 類方法的聲明
+ (int)caculate:(int)value1 addAnother:(int)value2;
- 類方法的實現
+ (int)caculate:(int)value1 addAnother:(int)value2{
return value1 + value2;
}
- 類方法的調用
result = [User caculate:1 addAnother:2];
NSLog(@"計算結果 %i",result);
如果聲明的是對象方法,那么就必須實現對象方法;如果聲明的是類方法,就必須實現類方法
類方法與對象方法的區別
- 對象方法以
-
開頭,類方法以+
開頭 - 對象方法必須用對象調用,類方法必須用類調用
- 對象方法中可以直接訪問屬性(成員變量),類方法中能直接訪問屬性
- 調用類方法比調用對象方法效率高
- 對象方法中可以直接調用類方法,類方法中要通過對象調用對象方法,類方法中可以直接調用類方法,對象方法中可以直接調用對象方法
類方法的使用場景
- 方法中沒有使用到屬性,盡量使用類方法,因為類方法的執行效率高
- 類方法一般用于定義工具方法