【发布时间】:2019-11-04 00:28:37
【问题描述】:
MKMapView 的 delegate 属性在 swift 中是这样定义的:
@IBOutlet weak open var delegate: MKMapViewDelegate?.
如果我必须为事先未知长度/计数的数组中的每个项目动态创建地图视图,我如何动态地为每个地图分配一个唯一的委托实例,而不为每个委托保留一个类变量(因为我们不知道数组中的项目数)。有没有类似 Obj-C 的__Strong 的东西?
更新: 我可以有一个类数组,我可以将每个委托添加到其中,但是,如果 Swift 中有这样的事情,是否还有其他更内联的方法,例如使用 __Strong
【问题讨论】:
-
“堆栈上的其他答案建议保留一个类变量作为委托的强引用。这就是我想避免的解决方案......” - 你可能想避免这种情况,但这是正确的答案。因为地图视图只保留了一个
weak对其delegate的引用,如果你不希望它被释放,你将不得不在某个地方建立你自己对该对象的强引用。而且,不,使用局部变量显然是行不通的(即使它确实会消除警告)。 -
@rob,示例情况如何。你将如何处理它。在这种情况下,您不能保留类委托变量。
-
就像您在更新中所说的那样,您可以拥有这些委托对象的数组。
-
@Rob,对对对。我懂了。我想我会先检查一下。希望将来我们可以得到类似于 __Strong 的东西,用于内联弱委托保留。
-
不,没有。对不起。我们真的应该删除/关闭这个问题......
标签: swift delegates mkmapview weak-references strong-references