sockets连接和动作连接有什么区别?

当我尝试创buildxib和文件所有者之间的连接时,有几种types可供select:

  • sockets连接
  • 行动连接
  • 出口收集连接

所有这些之间有什么区别?

Outlet和Action是ViewController与View交互的方式(或连接/中介)。 虽然他们在iOS认识的最初几天可能看起来很相似,但是他们有不同的用途:

OutletViewController talks to View by using Outlet 。 在View中的任何对象(UILabel,UIButton,UIImage,UIView等)都可以有一个Outlet连接到ViewController。 Outlet在ViewController中用作@property ,这意味着:
– 你可以使用outlet来设置一个对象(比如更新UILabel的文本,设置UIView的背景图像等)。
– 你可以从一个对象(如UIStepper的当前值,NSAttributedString的当前字体大小等)

操作View pass on messages about view to ViewController by using Action (或者在技术上,ViewController将自己设置为View中的任何Action Target )。 Action是ViewController中的一个Method (与ViewController中的@property的Outlet不同)。 每当一个Event (任何Event )发生的对象(如UIbutton被挖掘),然后动作传递消息到ViewController。 Action(或Action方法)在收到消息后可以做些什么。
注意:操作只能由UIControl的子对象设置; 意味着你不能为UILabel,UIView等设置Action

Where何时使用Outlet或Action:
在iOS熟人的最初几天里,它完全正常地让Action和Outlet和他们的用法混为一谈。 有几个小的东西(如获取一个button的文本/标题),可以由奥特莱斯和行动,但否则他们是非常不同的。 在使用一个或其他的时候,要记住以上几点。

当您想要更改控件的某些属性(即文本颜色或标签的文本大小)时使用出口

当您想要检测触发器时(即按下button时)使用动作

出口给你的类(通常是一个视图控制器)在xib中的子视图的引用。 该动作提供了一个方法,当被用户激活时,通过控件(通常也是xib上的子视图)来调用。

换句话说,出口给obj-c代码访问IB中的对象; 而动作给xib控件访问obj-c代码。

Outlet连接:是连接一个属性或实例variables,形成当前文件的所有者实例到xib,当这个xib将被反序列化时,将连接到文件所有者对象

出口动作:将目标/动作添加到指定的sockets(视图)从xib到所有者类

Outlet集合:类似于一个sockets,但它将一个视图数组连接到一个socketsvar

奥特莱斯和行动可视化

Outlet和Action连接是UIViewController与UView进行通信的直接方式。 例如,当View Controller需要设置UILabel的文本时,它将通过sockets连接来实现。 当一个View的UIButton对象被点击时,它通过使用动作连接将消息传递给View Controller。 这意味着在View Controller中创build的插件被声明为@property,并且通过声明一个方法来创build一个动作。

当您需要将代码中的消息发送到Xcode故事板中的用户界面对象时,将创build一个sockets连接 。 该对象可以是控件,如button,滑块和开关,也可以是故事板中定义的任何其他对象,如标签和进度条。 例如,当你的代码确定一个标签应该显示一些文本时,代码通过sockets发送一条消息告诉标签显示新的文本。

当您需要从故事板中的控件向您的代码发送消息时,会创build一个操作连接 。 控件是一个用户界面对象,当用户操作对象时会导致操作或可见的结果。 例如,当用户点击一个button时,button会向您的代码发送一个操作消息,告诉它执行适当的方法。 可以用来创build动作连接的控件的其他示例是文本字段,滑块和开关。

参考文献:1. https://medium.com/@GanChau/outlet-vs-action-connections-in-xcode-b5331fb233a1