Ios 定义委托属性时id与类名

Ios 定义委托属性时id与类名,ios,objective-c,Ios,Objective C,我正在我的应用程序中处理授权委托模式 我以前见过的大多数东西都会使用以下内容: @property (weak) id<Delegate> delegate; @属性(弱)id委托; 这会使它比我们说的更弱吗 @property (weak) UIViewController<Delegate> *delegate; @property(弱)UIViewController*委托; 我意识到我在第一个命令中要求任何指针,在第二个命令中我希望得到一个键入的指针。但我

我正在我的应用程序中处理授权委托模式

我以前见过的大多数东西都会使用以下内容:

@property (weak) id<Delegate> delegate;
@属性(弱)id委托;
这会使它比我们说的更弱吗

@property (weak) UIViewController<Delegate> *delegate;
@property(弱)UIViewController*委托;
我意识到我在第一个命令中要求任何指针,在第二个命令中我希望得到一个键入的指针。但我只希望我的委托是UIViewController或子类

有人能解释这些区别和利弊吗

但我只希望我的委托是
UIViewController
或子类

然后选择第二种方法-第一种方法表示它可以是符合
协议的任何对象

但我只希望我的委托是
UIViewController
或子类


然后选择第二种方法-第一种方法表示它可以是符合
协议的任何对象。

没有真正的优点或缺点。合同完全不同。一个说“我不在乎它是什么类,只要它符合该协议”,另一个说“我想要UIViewController的一个子类,它也符合该协议”

这里唯一的一点是,Cocoa中“委托”模式的思想通常是为API的客户端提供一种创建对象的方法,该对象将自定义一个或多个其他组件的行为


由于您希望此属性成为视图控制器,因此语义不仅仅是一个委托,因此我不会将其称为委托,而是一个xxxViewController,其中“xxx”是您的对象与该视图控制器之间的实际功能关系。

没有真正的优点或缺点。合同完全不同。一个说“我不在乎它是什么类,只要它符合该协议”,另一个说“我想要UIViewController的一个子类,它也符合该协议”

这里唯一的一点是,Cocoa中“委托”模式的思想通常是为API的客户端提供一种创建对象的方法,该对象将自定义一个或多个其他组件的行为


由于您希望此属性成为视图控制器,因此语义不仅仅是一个委托,因此我不会将其称为委托,而是一个xxxViewController,其中“xxx”是您的对象和该视图控制器之间的实际功能关系。

但它们都同样弱?抱歉,我只是想确定我知道我在做什么。作为一名代表,ARC应该很弱吗?@j_mcnally哦,你的意思是关于内存管理?现在这与类型无关了…@j_mcnally是的,
在这两种情况下都意味着“未恢复,在解除分配时为零”。但它们都同样弱?抱歉,我只是想确定我知道我在做什么。作为一名代表,ARC应该很弱吗?@j_mcnally哦,你的意思是关于内存管理?现在这与类型无关了…@j_mcnally是的,
weak
在这两种情况下都表示“未恢复,在解除分配时为零”。