objective-C学习笔记(四)函数成员:方法(函数)

函数分为: 

   全局函数(C语言函数) 

   成员函数(OBJC方法):实例方法 “-” 和类方法“+”的区别

   //这里要区别静态变量(类变量)、全局函数、常量的区别

   OBJC里面,所有方法默认为公有方法。没有private或protected方法

实例方法:

  可以访问:(self)实例方法、实例变量、实例属性

  可以访问:类方法、静态变量

类方法:

  可以访问:类方法、静态变量

  不能访问:(self)实例方法、实例变量、实例属性,只能new一个对象才能访问

self指针:

 编译器在编译实例方法的时候,自动new了一个本类的对象:self

 类方法在编译的时候, 也会new一个self,可是,这个时候的self是类,而不是对象。

 方法参数:

 如果参数为值类型,则为传值方式;

 如果参数类型为引用类型,则为传指针方式。

 -(void)changeX : (int)x {} //单个参数的话,方法名既为外部参数名,调用的时候传值用;

                                        //后面的参数是内部参数,函数内部计算用。

 -(void)changeX:(int)x  toY:(int)y{} //两个以上的参数的话,就需要单独命名外部参数(toY)。

 -(void)changeX:(int)x  toZ:(int)y{}//这个上面的方法就是不同的两个方法。

动态方法调用机制:消息分发表

id obj = [[BLNPoint alloc] init];

obj 不管是什么类型的对象(即内存没有分配一个栈,只是分配了一个堆),然后再在这个堆的消息分发表里找到所有的方法,可以直接使用。

和全局方法的区别:

全局方法在编译的时候,开辟的内存首地址就已经确定了,所以性能上非常快。

而动态方法调用是要在运行时,去查找这个obj的methodlists里查找对应的方法。会有一定的性能损耗。



FROM: http://www.cnblogs.com/dom075/p/5311758.html


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值