【问题标题】:Objective-C: How do you denied access to parent properties from subclasses?Objective-C:你如何拒绝子类对父属性的访问?
【发布时间】:2015-11-12 17:45:07
【问题描述】:

如果我定义了这些类,如何拒绝访问子类中的someObject 属性?

@interface ForeignSuperClass
// I can not modify the file
@property (nonatomic) NSObject *someObject;
@end

.

@interface MySubClass : ForeignSuperClass
// this is good for reuse someObject
// but how can I be denied access to the someObject for SubClasses - MySubClass
@end

对于那些将继承我的班级MySubClass,没有访问财产someObject的人

【问题讨论】:

  • 我们不是在谈论 KVO

标签: ios objective-c


【解决方案1】:

您应该将@property 声明放在您的.m 文件而不是.h 文件中。这将使它在子类中不可见(假设您没有导入 .m 文件)。

值得注意的是,这只会隐藏属性。从技术上讲,您仍然可以使用 Objective-C 和 iOS SDK(like setValue:forKey: 等)中提供的任何动态消息传递技术来访问这些方法。

【讨论】:

  • 也许这会有所帮助stackoverflow.com/questions/5643130/…
  • 对不起,我不能修改SuperClass文件,是的,我知道KVO,但我们不是在谈论KVO
  • @EvGeniyIlyin 如果不能修改超类声明属性的方式,那么就没有办法隐藏它的可见性。
【解决方案2】:

要从子类访问超类中定义的属性,请使用 self 关键字。如

NSLog(@"%@", self.someObject);

【讨论】:

    猜你喜欢
    • 2014-01-14
    • 1970-01-01
    • 2019-09-23
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-05-28
    • 1970-01-01
    相关资源
    最近更新 更多