Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

Objective-C function with default parameters? [duplicate]

Possible Duplicates:
Optional arguments in Objective-C 2.0?
Objective-C Default Argument Value

I'm writing a C function in Objective-C. I want a default value for my last parameter.

I've tried:

foo(int a, int b, int c = 0);

but that's C++.

I've also tried:

foo(int a, int b, int c)
{
    ...
}

foo(int a, int b)
{
   foo(a, b, 0);
}

But that's also C++.

Is there a way to do this in Objective-C instead?

like image 454
Brian Postow Avatar asked Mar 12 '10 21:03

Brian Postow


3 Answers

There's no default parameters in ObjC.

You can create 2 methods though:

-(void)fooWithA:(int)a b:(int)b c:(int)c {
  ...
}
-(void)fooWithA:(int)a b:(int)b {
  [self fooWithA:a b:b c:0];
}

For C : there's nothing special added to the C subset by using ObjC. Anything that cannot be done in pure C can't be done by compiling in ObjC either. That means, you can't have default parameters, nor overload a function. Create 2 functions instead.

like image 92
kennytm Avatar answered Sep 19 '22 12:09

kennytm


No, objective-c does not support default parameters. See similar question

like image 7
Vladimir Avatar answered Sep 21 '22 12:09

Vladimir


You can write a C function with a variable length argument list. You can use '...' as the data type for one of your function's declared parameters to specify where in the parameter list the variable argument list begins. (That allows you to have one or more required arguments before the start of the list.)

printf() is an example of a function that is written using this facility (known as varargs).

printf(const char *restrict format, ...);

Here, the first argument is required, and then can be followed by zero or more additional arguments.

If you wrote your function this way, it could supply a default value for the missing parameter.

like image 3
jlehr Avatar answered Sep 20 '22 12:09

jlehr