【发布时间】:2017-10-24 01:13:00
【问题描述】:
这很有趣:您似乎无法在 swift struct 上调用选择器消息!我的意思是:我有一个struct 并想在其上实现一个简单的Timer,使用带有selector: 参数的Timer.scheduledTimer 的变体。编译器告诉我,被调用的选择器方法需要一个objc 属性才能使该方法对Objective-C 调用序列可见,但是对于非类对象不支持(又是另一个有用的编译器消息!;-)。
我认为在我的特定情况下使用struct 是一种更好的方法,但我想我将不得不将其反向移植到class,除非有人有更好的主意...
【问题讨论】:
-
这真的是不可能的。您甚至如何将结构作为目标传递?它会被复制......计时器是为引用类型制作的。如果绝对需要(可能不需要),您可以使用 CFTimer。
-
我没有传递结构。我正在尝试将选择器样式的消息@on@ 称为结构。抱歉,如果不清楚。 (而且很可能不是。这是一个很难描述的问题,我不确定我对技术词汇的掌握是否完全胜任这项任务。一个人只能做自己能做的事,但是......)跨度>
-
这很有趣。
-
要调用选择器,您需要传递目标。因此,您也必须传递结构。但这只是原因之一,如果这永远行不通。
-
@hkatz 不,它只是行不通。将选择器与值类型一起使用是不可能的。选择器本质上与引用类型相关联,或者更具体地说,与
NSObject后代相关联。
标签: swift