gpt4 book ai didi

swift - 如何使一个函数只能被特定的类快速调用?

转载 作者:行者123 更新时间:2023-11-28 07:29:37 25 4
gpt4 key购买 nike

我有两个框架 A 和 B。我在 B 中有一个名为 getMap() 的公共(public)函数,它返回 map 的副本(这是 B 中的私有(private)变量)。所以我在 A 中调用 getMap() 来获取这个值。这很好,因为它是一个副本,所以无论我对返回值做什么,它都不会影响 B 中的实际变量。

现在我对这个值做了一些处理,我需要把它传回给B。问题是:为了传回它,它必须是一个公共(public)函数,但我不希望其他框架或应用程序调用此函数,因为只有 A 应该更改此映射值。

有没有办法在 B 中指定只有当 A 正在调用该函数时才应设置该值,否则忽略任何其他使用此函数的人?我听说您可以使用委托(delegate)/协议(protocol)来实现此目的,但我不明白。

最佳答案

是的,您应该能够使用委托(delegate)/协议(protocol)来实现这一点。该协议(protocol)仍然必须是公开的,这意味着任何类都可以实现该协议(protocol),但对此的简单解决方案是不在任何其他类中实现它。

您可以像这样在框架 B 中创建协议(protocol):

protocol FrameworkBDelegate {
func sendMapChanges(map: Map)
}

然后在您准备好将其发送回其他框架时调用委托(delegate)方法:

func changeMap() {
var map = frameworkA.getMap()

// Do stuff to map...

delegate.sendMapChanges(map: map)
}

我不想写一整篇关于如何实现委托(delegate)的教程,所以这里有一个来自 Sundell 的 Swift 的好教程:here
如果您需要任何帮助,请告诉我。

关于swift - 如何使一个函数只能被特定的类快速调用?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/55264734/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com