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

Mar*_*n08 8 objective-c

我有以下ViewController类

#import <UIKit/UIKit.h>

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

@property (nonatomic, retain) UITextField *field1;

- (IBAction) method1:(id)sender; 
@end
Run Code Online (Sandbox Code Playgroud)

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

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

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

谢谢.

Mar*_*c W 20

你没有传递指针UITextField.

method1:(UITextField)sender
Run Code Online (Sandbox Code Playgroud)

应该

method1:(UITextField *)sender
Run Code Online (Sandbox Code Playgroud)

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