How to return two values?

前端 未结 4 2132
深忆病人
深忆病人 2021-02-13 10:05

I\'d like to return a Cartesian coordinate (x, y), as two ints. The only way I see is to create a class and return an instance of it.

How to return two value

相关标签:
4条回答
  • 2021-02-13 10:21

    I recommend you to return an NSDictionary, inside Dictionary you can store and send any object type and any number of variables.

    -(NSDictionary*)calculateWith:(id)arg
    {
    NSDictionary *urDictionary =@{@"key1":value1,@"Key2":value2,.....};
    return  urDictionary;
    }
    
    0 讨论(0)
  • 2021-02-13 10:24

    Couldn't you make an NSArray for this?

    return [NSArray arrayWithObjects:coorX, coorY, nil];
    
    0 讨论(0)
  • 2021-02-13 10:36

    You can only return one value from a function (just like C), but the value can be anything, including a struct. And since you can return a struct by value, you can define a function like this (to borrow your example):

    -(NSPoint)scalePoint:(NSPoint)pt by:(float)scale
    {
        return NSMakePoint(pt.x*scale, pt.y*scale);
    }
    

    This is only really appropriate for small/simple structs.

    If you want to return more than one new object, your function should take pointers to the object pointer, thus:

    -(void)mungeFirst:(NSString**)stringOne andSecond:(NSString**)stringTwo
    {
        *stringOne = [NSString stringWithString:@"foo"];
        *stringTwo = [NSString stringWithString:@"baz"];
    }
    
    0 讨论(0)
  • 2021-02-13 10:41

    You can either return one value directly and return another by reference, as shown in gs's answer, or create a struct type and return that. For example, Cocoa already includes a type to identify points on a 2D plane, NSPoint.

    0 讨论(0)
提交回复
热议问题