为什么“不能将对象用作方法的参数”?

时间:2009-05-10 20:32:02

标签: objective-c

我有以下ViewController类

#import <UIKit/UIKit.h>

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

@property (nonatomic, retain) UITextField *field1;

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

当我将method1:(id)sender更改为method1:(UITextField)sender时,我收到错误“不能将对象用作方法的参数”。

我搜索并发现this post说“它[使用对象作为方法参数]在Objective-C中不是一个好主意,因为Objective-C不允许静态分配对象

任何人都可以指出我可以在哪里找到更详细的解释吗?

谢谢。

1 个答案:

答案 0 :(得分:20)

你没有传递UITextField的指针。

method1:(UITextField)sender

应该是

method1:(UITextField *)sender

当您为对象类型传递非指针时,Objective-C不喜欢它。