02.OC方法

定義方法

在OC中,定義一個方法,分為聲明和實現,聲明要寫在@interface中,而實現要寫在@implementation

編寫方法的規律總結

  1. 確定函數名稱
  2. 確定形參
  3. 確定返回值
  4. 確定返回值類型

方法的聲明

  • 無參無返回值對象方法
@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);

如果聲明的是對象方法,那么就必須實現對象方法;如果聲明的是類方法,就必須實現類方法

類方法與對象方法的區別

  1. 對象方法以- 開頭,類方法以+開頭
  2. 對象方法必須用對象調用,類方法必須用類調用
  3. 對象方法中可以直接訪問屬性(成員變量),類方法中能直接訪問屬性
  4. 調用類方法比調用對象方法效率高
  5. 對象方法中可以直接調用類方法,類方法中要通過對象調用對象方法,類方法中可以直接調用類方法,對象方法中可以直接調用對象方法

類方法的使用場景

  • 方法中沒有使用到屬性,盡量使用類方法,因為類方法的執行效率高
  • 類方法一般用于定義工具方法
?著作權歸作者所有,轉載或內容合作請聯系作者
平臺聲明:文章內容(如有圖片或視頻亦包括在內)由作者上傳并發布,文章內容僅代表作者本人觀點,簡書系信息發布平臺,僅提供信息存儲服務。

推薦閱讀更多精彩內容