Friday, May 6, 2011

Why "cannot use an object as a parameter to a method"?

I have the following ViewController class

#import <UIKit/UIKit.h>

@interface SampleViewController : UIViewController {
    IBOutlet UITextField *field1;
}

@property (nonatomic, retain) UITextField *field1;

- (IBAction) method1:(id)sender; 
@end

When I change the method1:(id)sender to method1:(UITextField)sender, I get the error "Cannot use an object as a parameter to a method".

I searched and found this post which says "it [using an object as a method parameter] is not a good idea in Objective-C because Objective-C does not allow statically allocated object".

Can anyone point out where I can find a more detailed explanation for this?

Thank you.

From stackoverflow
  • You're not passing a pointer of UITextField.

    method1:(UITextField)sender
    

    should be

    method1:(UITextField *)sender
    

    Objective-C doesn't like it when you pass non-pointers for object types.

    Casebash : Interestingly, you can pass it if it is a struct rather than object
  • Simple and correct answer. Thanks, been searching for hours.

    Casebash : Peter, please don't post comments until you gain enough rep to post them as comments instead of answers

0 comments:

Post a Comment