04-02、函數和類的方法對比

函數和方法的區別

1.函數屬于整個文件, 方法屬于某一個類
方法如果離開類就不行
2.函數可以直接調用, 方法必須用對象或者類來調用
注意: 雖然函數屬于整個文件, 但是如果把函數寫在類的聲明中會不識別
3.不能把函數當做方法來調用, 也不能把方法當做函數來調用

方法的注意點:

方法可以沒有聲明只有實現
方法可以只有聲明沒有實現, 編譯不會報錯, 但是運行會報錯
如果方法只有聲明沒有實現, 那么運行時會報:
reason: '+[Person demo]: unrecognized selector sent to class 0x100001140'
發送了一個不能識別的消息, 在Person類中沒有+開頭的demo方法
reason: '-[Person test]: unrecognized selector sent to instance 0x100400000'

類也有一個注意點:

類可以只有實現沒有聲明
注意: 在開發中不建議這樣寫

#import <Foundation/Foundation.h>

//@interface Person : NSObject
//// 對象方法聲明
//- (void)test;
//// 類方法聲明
//+ (void)demo;
//
//@end

@implementation Person : NSObject
// 對象方法實現
- (void)test
{
NSLog(@"test");
}
// 類方法實現
+ (void)demo
{
NSLog(@"demo");
}

@end



// 外部函數的聲明
extern void sum();
// 內部函數的聲明
static void minus();
// 外部函數
extern void sum()
{
printf("sum");
}
// 內部函數
static void minus()
{
printf("minus");
}


int main(int argc, const char * argv[]) {
sum();
//    [Person demo];
//    demo();
//    [Person sum];
//    [Person demo];
Person *p = [Person new];
[p test];

return 0;
}
最后編輯于
?著作權歸作者所有,轉載或內容合作請聯系作者
平臺聲明:文章內容(如有圖片或視頻亦包括在內)由作者上傳并發布,文章內容僅代表作者本人觀點,簡書系信息發布平臺,僅提供信息存儲服務。

推薦閱讀更多精彩內容

  • 轉至元數據結尾創建: 董瀟偉,最新修改于: 十二月 23, 2016 轉至元數據起始第一章:isa和Class一....
    40c0490e5268閱讀 1,788評論 0 9
  • 無法揣測母親的含義 似息弱持續的風流 交融于微微發燙的碳火 迎風走 孤影成雙 吹不平的溝坎 充斥著浮世塵煙 夕陽殘...
    藍橋半山閱讀 216評論 0 1
  • 1.SpringIndicator 多頁切換 地址:http://itlanbao.com/code/201508...
    4528283108ee閱讀 454評論 0 1
  • 秋風秋葉秋冷蕭蕭瑟瑟 秋雨秋寒秋思料料峭峭 梧桐葉落時 婉轉西風吹走一地憑憶金黃色 瀟瀟雨歇爾 狂卷細水打濕一身囁...
    菩提子夜閱讀 433評論 0 0
  • —壹— 我在橋邊守了五百年。 這石橋癡的很,化身石橋,五百年來只為等一個人,還只是希望那個叫阿生的少年能走過她的身...
    天上時玉京閱讀 683評論 3 6