OC对象可以作为函数参数传递给参数,以下简述对象参数在函数中的两种情况:
一、对象作为参数传递到函数中,在函数内部对此对象的参数会影响到外部传递进来的对象。
二、对象作为参数传递到函数中,在函数内部指向其它的对象后,再对此参数对象进行操作时,不影响外部传递进来的对象。
如下文中的例子,函数test1为情况一,函数test2为情况二。
#import <Foundation/Foundation.h>
//声明Car类继承自NSObject
@interface Car:NSObject
{
@public
int wheels;//轮子
int speed;//速度
}
//声明run方法
- (void)run;
@end
@implementation Car
//实现run方法
- (void)run
{
//方法中的成员变量指当前对象的变量,即谁调用方法,访问的就是谁的成员变量
NSLog(@"%d个轮子,速度为%dkm/h的车子跑起来",wheels,speed);
}
@end
//传递一个Car类型的参数给test1函数
void test1(Car *newCar)
{
//通过对象修改成员
newCar->wheels=5;
}
//传递一个Car类型的参数给test2函数
void test2(Car *newCar)
{
//声明一个新的对象
Car *c2=[Car new];
c2->wheels=5;
c2->speed=300;
//将参数变量指向新创建的对象。此操作过后,对参数指针变量的操作不影响外部传递进来的对象
newCar=c2;
newCar->wheels=6;
}
int main()
{
//创建一个新的Car对象
Car *c=[Car new];
c->wheels=4;
c->speed=250;
//将新创建的对象传递给test2方法
test2(c);
[c run];
return 0;
}