objective c - उद्देश्य C(iphone) में संदर्भ द्वारा मान कैसे पास करें




objective-c (4)

मेरा एक बहुत बुनियादी सवाल है। मैं एक नया iPhone प्रोग्रामर हूँ। मेरा सवाल यह है कि कोई भी मुझे बता सकता है कि मैं ओब्ज में एक समारोह के संदर्भ में मूल्यों को कैसे पारित कर सकता हूं सी? मुझे पता है कि इसे VB और C # में कैसे करना है। लेकिन इसे ओब्ज c में कैसे करना है पता नहीं है।

धन्यवाद


Objective-C में Pass-by-Reference वही है जो 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);

इस तरह आजमाएं:

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

आशा करता हूँ की ये काम करेगा!!


यदि आप ऑब्जेक्टिव C ++ का उपयोग करते हैं, जो आप अपनी फ़ाइल को एक्सटेंशन .mm के साथ नाम देकर कर सकते हैं, या Xcode को सभी स्रोत को Objective C ++ के रूप में संकलित करने के लिए कह रहे हैं, तो आप उसी तरह से संदर्भ पारित कर सकते हैं जैसे आप C ++, जैसे:

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

यदि आप परिणामी फ़ंक्शन कॉल से एक से अधिक पते प्राप्त करना चाहते हैं, तो एक तर्क होना चाहिए। आप ऐसा कर सकते हैं बजाय एक रैपर क्लास बनाकर और उसके बजाय पास करके। उदाहरण के लिए:

@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;
}






objective-c