Objective-c – Why “cannot use an object as a parameter to a method”

objective-c

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.

Best Solution

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.

Related Question