一、概念
/*
函数 和 方法的 区别
1.函数属于整个文件, 方法属于某一个类
方法如果离开类 就不行
2.函数可以直接调用
注意 : 虽然函数属于整个文件,但是如果把函数 写在 类的声明中 会不识别
方法的注意点 :
方法可以没有声明 只有实现
方法可以只有声明没有实现,编译不会报错,但是运行会报错
如果方法 只有声明 没有实现, 那么运行时会报错 : reason: '+[Person demo]: unrecognized selector sent to class 0x100001140' ---class
发送了一个不能识别的消息, 在Person类中 没有+开头的 demo方法
reason: '-[Person test]: unrecognized selector sent to instance 0x100103560' ---instance
类也有一个注意点 :
类 可以只有实现 没有声明
注意 : 在开发中 不建议这样写
*/
二、代码
#import <Foundation/Foundation.h>
#pragma mark 类
//@interface Person : NSObject
//// 对象方法声明
//- (void)test;
//// 类方法声明
////+ (void)demo;
//
//
///*
//// 外部函数声明
//extern void sum();
//// 内部函数声明
//static void minus();
//// 外部函数
//extern void sum()
//{
// printf("sum");
//}
//// 内部函数
//static void minus()
//{
// printf("minus");
//}
// */
//
//@end
@implementation Person :NSObject
// 对象方法实现
- (void)test
{
NSLog(@"test");
}
// 类方法实现
+ (void)demo
{
NSLog(@"demo");
}
@end
#pragma mark 函数
// 外部函数声明
extern void sum();
// 内部函数声明
static void minus();
// 外部函数
extern void sum()
{
printf("sum");
}
// 内部函数
static void minus()
{
printf("minus");
}
#pragma mark main函数
int main(int argc, const char * argv[])
{
// demo();
// [Person sum];
// [Person demo];
// [Person demo];
Person *p = [Person new];
[p test];
return 0;
}