AnyObject和UIbutton作为发件人有什么区别?

Bri*_*ure 12 uibutton ios swift

在定义IBAction时,Anyobject和UIButton都有一个选项,两者都有效,有什么区别?

May*_*ukh 11

是的,两者都有效.不同之处在于,通过将其声明为按钮,您可以获得一个类型为UIButton的引用而不是AnyObject(或Objective-C中的id).如果你不这样做,你将不得不在代码中手动完成.

您应该更喜欢将它留给AnyObject,以防该动作有一些您希望从其他任何地方调用的代码,而不仅仅是按钮操作.

例如,刷新按钮,您可能需要以编程方式进行刷新.如果你已经将你的动作参数设置为UIButton,你必须发送一个UIButton(但为什么???你是以编程方式进行的,对吧?).如果它是AnyObject,您可以发送'self'.这也将使您区分刷新是在动作上还是以编程方式完成.

希望解释一下.很抱歉没有代码.我不是很喜欢Swift编码.编辑是受欢迎的.

编辑

所以,即使它是AnyObject,它也有你的UIButton属性.只需输入它即可使用它们.


Cha*_*kle 10

如果您只是打算使用该功能,UIButton最好将您的发件人声明为UIButton.这为您节省了一些代码,并且它还告诉将来读取您的代码的任何人,您只希望该函数与a一起使用UIButton.

使用AnyObject将起作用,但您需要执行if let button = sender as? UIButton { }以便将其作为按钮访问.这种方式允许您根据发件人的实际情况做出不同的反应,但我不建议这样做.