//
// main.m
// 函数和方法的区别
//
// Created by mac on 16/5/7.
// Copyright © 2016年 rimi. All rights reserved.
//
#import <Foundation/Foundation.h>
/*
函数和方法的区别:
1.函数属于整个文件,方法属于某个类,方法离开类就不行
2.函数可以直接调用,方法必须用对象或者类来调用
3.函数属于整个文件,它可以写在文件的除了函数内部和类的声明中的任何位置。如果写在了类的声明中,系统不会识别
4.不能把函数当作方法来调用,也不能把方法当作函数来调用
方法的注意点中:
》方法可以没有声明,只有实现,这样可以正常运行
》方法可以只有声明,没有实现,编译不会报错,如果你在方法中或是某个函数中调用了该方法那么在运行的时候一定会报错,它会提示某个方法没有实现
>a.'+[Person walk]: unrecognized selector sent to class 0x1000045e0'表示有个类方法没有实现 从+号可以识别
>b. '-[Person eat]: unrecognized selector sent to instance 0x100400130'表示有个对象方法没有实现 从-号可以识别
关键点:在oc中有时回用到static关键字,那么static关键字有什么意义呢?
变量确是类变量。这个和C语言里面的static的变量属性一样。
void counter{
static int count = 0;
count ++;
}
counter();
counter();
上面代码执行完成之后,第一次count的值为1,第二次调用count的值为2
从这个列子中可以看出,static变量它只会初始化一次。当然static关键字放在函数前面它又有别的意义了,不过笔者还没看到过static放在方法面前的。这里不妨说下static放在函数前面的意义吧,在解释这个关键字之前先引入extern这个关键字,因为它们两之间有着好似相同又确实不相同的意义。extern 它放在函数面前,表示外部文件可以访问该函数,而static刚好相反,如果在函数前面加了static在外部文件中是不能访问的。extern == 不加。
*/
@interface Person : NSObject
-(void)eat;
+(void)walk;
@end
@implementation Person
//-(void)eat
//{
// NSLog(@"我能吃");
//}
+(void)walk
{
NSLog(@"我能走");
}
@end
int main(int argc, const char * argv[]) {
@autoreleasepool {
// insert code here...
NSLog(@"Hello, World!");
Person *p = [Person new];
[Person walk];
// [p eat];
// NSString
}
return 0;
}
函数和方法的区别
最新推荐文章于 2022-03-16 10:10:35 发布