如何在目标C(iphone)中通过引用传递值

我有一个非常基本的问题。 我是一个新的iPhone程序员。 我的问题是谁可以告诉我如何通过引用一个函数在obj中传递值。 C? 我知道如何在VB和C#中做到这一点。 但是不知道如何在Obj中做到这一点。

谢谢

Objective-C中的引用通过与C中的引用相同

相当于下面的C#代码:

void nullThisObject(ref MyClass foo) { foo = null; } MyClass bar = new MyClass(); this.nullThisObject(ref bar); assert(bar == null); 

 - (void)nilThisObject:(MyClass**)foo { [*foo release]; *foo = nil; } MyClass* bar = [[MyClass alloc] init]; [self nilThisObject:&bar]; NSAssert(bar == nil); 

 - (void)zeroThisNumber:(int*)num { *num = 0; } int myNum; [self zeroThisNumber:&myNum]; NSAssert(myNum == 0); 

如果你使用Objective C ++,你可以通过命名扩展名为.mm的文件来实现,或者告诉Xcode将所有源代码编译成Objective C ++,那么你可以像使用C ++一样传递引用,例如:

 - (OSStatus) fileFileInfo: (FileInfo&)fi; 

目标C中没有引用(以C ++的方式)。你可以通过指针传递你的对象,也可以通过值传递基本types。

例:

 void func(NSString* string) { ... } void func(NSInteger myint) { ... } .. NSString* str = @"whatever"; NSInteger num = 5; func(str); func(num); 

试试这个方法:

  -(void)secondFunc:(NSInteger*)i { *j=20; //From here u can change i value as well //now i and j value is same (ie i=j=20) } -(void) firstFunc { NSInteger i=5; [self secondFunc :&i]; //i value is 20 } 

希望能帮助到你!!

这取决于你的意思。 C(以及Objective-C)最接近引用types的是指针。 顾名思义,指针指向其他地方存在的数据。 为了得到所指向的东西,你必须去引用指针。 Objective-C中的对象永远不会被直接访问 – 你总是使用指针来与它们交谈。 您也可以将指针指向除对象以外的其他types。

指针是一个棘手的问题。 我肯定会推荐阅读C来感受他们。

如果你想从一个结果函数调用中得到多个地址,那么就有一个争论点。 你可以通过创build一个包装类来传递它。 例如:

 @interface AddressWrapper : NSObject { NSArray *array; NSString *string; } @property (nonatomic, assign) NSArray *array; @property (nonatomic, assign) NSString *string; @end 

在* .m中:

 @implementation AddressWrapper @synthesize array, string; @end -(void) getAddresses: (AddressWrapper*) wrapper { wrapper.array = myNSArray; wrapper.string = myNSString; }