Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/objective-c/24.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
我可以声明a';协议';键入Objective-C接口?_Objective C - Fatal编程技术网

我可以声明a';协议';键入Objective-C接口?

我可以声明a';协议';键入Objective-C接口?,objective-c,Objective C,我的想法非常类似于在java中声明接口类型的变量 那么比如说, 头文件1: @protocol Calculator @end 然后我定义了一个@接口计算器mpl,它实现了上述计算器协议 在头文件2中: @interface SomeViewController : UIViewController { } @property (weak, nonatomic) IBOutlet UITextField *txtResult; @property (weak, nonatomic) C

我的想法非常类似于在java中声明接口类型的变量

那么比如说,

头文件1:

@protocol Calculator

@end
然后我定义了一个
@接口计算器mpl
,它实现了上述
计算器
协议

在头文件2中:

@interface SomeViewController : UIViewController {


}

@property (weak, nonatomic) IBOutlet UITextField *txtResult;
@property (weak, nonatomic) Calculator* calculator;

@end
但是,xcode将在计算器行标记错误

property with 'weak' attribute must be of object type 
objective-c是否不允许使用此协议?

您应该使用

@property (weak, nonatomic) id <Calculator> calculator;

由于
CalculatorImpl
是一个接口,而不是一个协议。

a
@protocol
不是一个类型,因此不能将其用于
@属性的类型

您可能想做的是:

@property (weak, nonatomic) id <Calculator> calculator;
@属性(弱、非原子)id计算器;

这声明了一个对其类型没有限制的属性,除非它符合
计算器
协议。

如何通过将属性设置为type anyobject,在swift中创建对其类型没有限制的属性?
@property (weak, nonatomic) id <Calculator> calculator;