假设有两个类
文件A:
import Foundation
class ClassA {
/// a method that I don't want to exposed to others
static func privateMethod(append aStirng:String) -> String {
return "Appended String:" + aStirng
}
static func classMethod() -> String {
let theString = privateMethod(append: "random string") //problematic line when privateMethod(append:) is declared as private,fileprivate,internal...
return theString
}
}
Run Code Online (Sandbox Code Playgroud)
文件B:
import Foundation
class ClassB {
func aMethod() {
print(ClassA.classMethod())
}
}
Run Code Online (Sandbox Code Playgroud)
这有效。但我不希望 ClassB 使用privateMethod(append:)like ClassA.privateMethod(append: "")。所以我用 , 标记了该方法private,internal但fileprivate这些都不起作用。
为什么会这样呢?如何对 ClassB 隐藏方法?
[编辑] 这两个类是否拆分为单独的文件或合并为一个文件并不重要。仍然出现错误
您看到错误是因为privateMethod屏幕截图中的 不是静态方法。
静态方法不能调用类的实例(非静态)方法。
privateMethod在你的初始示例代码中是静态的吗?将ClassA更改为此应该可以工作,同时保持私有方法对ClassB隐藏:
class ClassA {
private static func privateMethod(append aString: String) -> String {
return "Appended String:" + aString
}
static func classMethod() -> String {
let theString = privateMethod(append: "random string")
return theString
}
}
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
2551 次 |
| 最近记录: |