gpt4 book ai didi

ios - objective c 父类(super class)中的 protected 变量在 swift 子类中不可访问

转载 作者:行者123 更新时间:2023-12-02 16:10:08 25 4
gpt4 key购买 nike

@interface MyObjectiveCmainClass
{
@protected
NSMutableArray* thisStringIsInaccessibleInSwiftSubclasses;//this I can't access in swift subclass
}
@property NSString* thisStringIsAccessibleInSwiftSubclasses;//this I can access in swift subclass
- (void) thisMethodIsAccessibleInSwiftSubclasses;//this too I can access in Swift subclass
@end
class MySwiftSubclass : MyObjectiveCmainClass {

override func thisMethodIsAccessibleInSwiftSubclasses() {
NSLog(self.thisStringIsAccessibleInSwiftSubclasses)
}
}

知道为什么我无法访问我的 ObjectiveC 实例变量上的 @protected 属性吗?

最佳答案

Swift 根本无法访问 Objective C 实例变量,@protected 或其他方式。

事实上,Swift 根本没有暴露实例变量的概念,只有属性。可以计算或存储属性,但就 API 而言,它们只是属性。


可能值得一提的是其中的动机:它是为了在库演变中提供灵 active 。库可以自由地更改它存储的值和它通过计算属性派生的值。例如。这样做可以提高内部代表的效率。但就客户而言,属性就是属性,与任何其他函数调用并无太大不同。他们不会经历重大的 API 更改。

如果这些属性的间接性成为性能问题,您可以通过将您的类型标记为 @frozen 来解决它。 .属性 getter 可以内联到直接 ivar 访问中,但这会暴露您的类型的内部布局并限制您将来可以进行的更改(除非您决定进行重大更改是可以的)

关于ios - objective c 父类(super class)中的 protected 变量在 swift 子类中不可访问,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/68238610/

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