一、概念
/*
函數(shù) 和 方法的 區(qū)別
1.函數(shù)屬于整個文件, 方法屬于某一個類
方法如果離開類 就不行
2.函數(shù)可以直接調(diào)用
注意 : 雖然函數(shù)屬于整個文件,但是如果把函數(shù) 寫在 類的聲明中 會不識別
方法的注意點(diǎn) :
方法可以沒有聲明 只有實(shí)現(xiàn)
方法可以只有聲明沒有實(shí)現(xiàn),編譯不會報錯,但是運(yùn)行會報錯
如果方法 只有聲明 沒有實(shí)現(xiàn), 那么運(yùn)行時會報錯 : reason: '+[Person demo]: unrecognized selector sent to class 0x100001140' ---class
發(fā)送了一個不能識別的消息, 在Person類中 沒有+開頭的 demo方法
reason: '-[Person test]: unrecognized selector sent to instance 0x100103560' ---instance
類也有一個注意點(diǎn) :
類 可以只有實(shí)現(xiàn) 沒有聲明
注意 : 在開發(fā)中 不建議這樣寫
*/
二继榆、代碼
#import <Foundation/Foundation.h>
#pragma mark 類
//@interface Person : NSObject
//// 對象方法聲明
//- (void)test;
//// 類方法聲明
////+ (void)demo;
//
//
///*
//// 外部函數(shù)聲明
//extern void sum();
//// 內(nèi)部函數(shù)聲明
//static void minus();
//// 外部函數(shù)
//extern void sum()
//{
// printf("sum");
//}
//// 內(nèi)部函數(shù)
//static void minus()
//{
// printf("minus");
//}
// */
//
//@end
@implementation Person :NSObject
// 對象方法實(shí)現(xiàn)
- (void)test
{
NSLog(@"test");
}
// 類方法實(shí)現(xiàn)
+ (void)demo
{
NSLog(@"demo");
}
@end
#pragma mark 函數(shù)
// 外部函數(shù)聲明
extern void sum();
// 內(nèi)部函數(shù)聲明
static void minus();
// 外部函數(shù)
extern void sum()
{
printf("sum");
}
// 內(nèi)部函數(shù)
static void minus()
{
printf("minus");
}
#pragma mark main函數(shù)
int main(int argc, const char * argv[])
{
// demo();
// [Person sum];
// [Person demo];
// [Person demo];
Person *p = [Person new];
[p test];
return 0;
}
最后編輯于 :
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者