函數和方法的區別
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;
}