Re: Variable Number of Parameters in Method
Re: Variable Number of Parameters in Method
- Subject: Re: Variable Number of Parameters in Method
- From: "Stephen J. Butler" <email@hidden>
- Date: Wed, 21 Aug 2013 12:17:09 -0500
On Wed, Aug 21, 2013 at 4:22 AM, Dave <email@hidden> wrote:
> if ([myType isEqualToString:@"NSInteger"] )
> {
> myNSInteger = va_arg(myArgumentList,NSInteger*);
> // do something with myNSInteger
> [myFormattedString appendFormat:@"myNSInteger = %d ",
> myNSInteger];
> }
>
> else if ([myType isEqualToString:@"CGFloat"] )
> {
> myCGFloat = va_arg(myArgumentList, CGFloat*);
> // do something with myCGFloat
> [myFormattedString appendFormat:@"myCGFloat = %f ",
> myCGFloat];
> }
This is better, however... if you pass an actual NSInteger or CGFloat to
the method, va_arg() should have a type of NSInteger or CGFloat, not
pointers to those types. Your code examples with it's printf style formats
is using the former, not the latter. Just to be clear, you can have all
these cases:
if ([myType isEqualToString:@"NSInteger"] ) {
myNSInteger = va_arg(myArgumentList,NSInteger);
} else if ([myType isEqualToString:@"NSInteger*"] ) {
pMyNSInteger = va_arg(myArgumentList,NSInteger*);
} else if ([myType isEqualToString:@"CGFloat"]) {
myCGFloat = va_arg(myArgumentList, CGFloat);
} else if ([myType isEqualToString:@"CGFloat*"]) {
pMyCGFloat = va_arg(myArgumentList, CGFloat*);
} ... etc
_______________________________________________
Cocoa-dev mailing list (email@hidden)
Please do not post admin requests or moderator comments to the list.
Contact the moderators at cocoa-dev-admins(at)lists.apple.com
Help/Unsubscribe/Update your Subscription:
This email sent to email@hidden