Objective-C方法与函数的区别
2016-01-06 11:24
627 查看
Objective-C方法与函数的区别
方法是唯对象所有函数是不依赖于对象存在的
方法 | 函数 |
---|---|
- (void)test; | void test(); |
方法是以减号 - 开头 | - |
类型要用()括起来 | - |
声明必须写在@interface-@end之间,实现必须写在@implementation-@end之间 | 可以写在文件中的任意位置 |
只能由对象来调用 | - |
可以直接访问成员变量 | 不可以直接访问成员变量 |
Objective-C成员方法与类方法的区别
成员方法是以减号 “-” 开头类方法是以加号 “+” 开头
成员方法 | 类方法 |
---|---|
- (void)test; | + (void)test; |
类方法可以直接使用类名调用
总结
OC成员方法就好比Java里的非静态方法,需要使用对象调用OC类方法就好比Java里的静态方法(static),可以使用类名直接调用
一般工具类使用类方法比较多
带有返回值的方法
Objective-C
声明@interface NumUtil : NSObject - (double)pi; @end
实现
@implementation NumUtil - (double)pi { return 3.14; } @end
调用
NumUtil *n = [NumUtil new]; NSLog(@"%f",[n pi]);
Java
Java类大概是这样
public class NumUtil{ public double pi(){ return 3.14; } }
调用
NumUtil numUtil = new NumUtil; numUtil.pi();
带有一个参数的方法
Objective-C
声明@interface NumUtil : NSObject - (int)square:(int)num; @end
实现
@implementation NumUtil - (int)square:(int)num; { return num * num; } @end
调用
NumUtil *n = [NumUtil new]; NSLog(@"%d",[n square:2]);
Java
Java类大概是这样
public class NumUtil{ public int square(int num){ return num * num; } }
调用
NumUtil numUtil = new NumUtil; numUtil.square(2);
带有多个参数的方法
Objective-C
声明@interface NumUtil : NSObject - (int)addNum1:(int)num1 addNum2:(int)num2; @end
实现
@implementation NumUtil - (int)addNum1:(int)num1 addNum2:(int)num2 { return num1 + num2; } @end
调用
NumUtil *n = [NumUtil new]; NSLog(@"%d",[n addNum1:1 addNum2:2]);
Java
Java类大概是这样
public class NumUtil{ public int add(int num1, int num2){ return num1 + num2; } }
调用
NumUtil numUtil = new NumUtil; numUtil. add(1, 2);
注意
Objective-C方法名的问题
OC的方法名,和Java有些不同,Java很好理解
OC也不难理解,只是习惯了Java的那种命名方式,看到OC有点不适应
举个例子:
- (double)pi;
这个很好理解,方法名就是 pi
- (int)square:(int)num;
带参数的方法名有点特殊了
首先说冒号“:”,冒号后面的一定是参数
可以理解成,有几个冒号,就有几个参数
把空格后面到参数前面的内容拼起来(不算类型),就是方法名
那么,这个方法的方法名就是square:,(注意:是有冒号的)
- (int)addNum1:(int)num1 addNum2:(int)num2;
根据上面的方法
这个方法的方法名就是 addNum1:addNum2:
其实很好理解,就是把每个参数的描述加上冒号拼接到一块,组成方法名,方便阅读
XCode查看方法名也很方便
相关文章推荐
- 使用clang命令行工具/终端直接 编译链接Objective-C应用程序
- Python 中Python 为什么要继承 object 类
- Objective-C Associated Objects 的实现原理
- error while loading shared libraries: libg2c.so.0: cannot open shared object file
- 面向对象数据库(Object Oriented Databases)
- 网页中要正常显示flash内容所用的object标签和embed标签
- Objective-C语言——UIButton 按钮
- Objective-C语言——UILabel标签
- ios学习笔记之Object-C—集合
- Effective Objective-C 2.0 第12条:理解消息转发机制
- JSONObject.fromObject
- Objective - C UIActionSheet 图片相关 将选中图片放在指定位置并适应大小,长按保存
- iOS [<NSObject 0x170204110> setValue:forUndefineKey:]: this class is not key value coding-compliant
- json和object之间相互转换
- Objective-C 与 Swift混编补充
- Objective-C与Java类的一些区别
- Objective-C与Java类的一些区别
- iOS UIView动画详解(Objective-C)
- Objective-C中的instancetype和id关键字
- Objective-C中实现变长参数问题