- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我有两个框架 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/
有一条(相对)众所周知的 Perl 公理:“只有 Perl 可以解析 Perl”。我想知道 Perl 6 是否仍然如此? 扩大讨论...考虑到 PyPy 最近的更新,我想到了这个问题。 Perl 独特
这是设置。在上一个问题中,我发现我可以通过子组件中的状态传递对象属性,然后使用 componentDidUpdate 获取该对象属性。在这种情况下,状态和属性都称为到达。 这是基本代码... expo
我运行的是 10.5.2 社区版。我已经标记了 源/主要/资源 作为源目录。我可以右键单击并“编译”某些文件,据我所知,这意味着 IDE 将文件复制到与发送类文件的“com.mydomain.pack
我是一名优秀的程序员,十分优秀!