【问题标题】:Instance variables scope in Objective-CObjective-C 中的实例变量范围
【发布时间】:2014-08-12 22:02:52
【问题描述】:

我想 ivars 的默认范围是@protected。

我在一个类的头文件中声明了这样一个变量:

{
int _test1;
}

但我可以在完全不相关的对象中使用 NSLog 打印这个变量 _test1。

NSLog(@"%d", _test1);

为什么 _test1 可用于第二个对象?

在哪里可以找到最新的 ivars 范围规则?

提前致谢。

【问题讨论】:

  • 请显示发生这种情况的代码。
  • 如果您所说的“完全不相关的对象”是指不同类的对象,并且该变量未在公共超类中声明,那么您就完蛋了。

标签: objective-c variables scope instance


【解决方案1】:

如果您说的是objective-c v1,那么您是对的……除非另有定义(通过使用@public、@private 或@packaged 关键字),ivars 将默认为@protected。

你没有显示你的代码,所以我不能确定,但​​我想知道你是否有与其他帖子中描述的相同的“问题”:Objective-C - Private vs Protected vs Public

对于objective-c 2,这是一种“弃用”。这篇文章几乎描述了现在如何做到这一点:http://robsprogramknowledge.blogspot.com/2011/08/objective-c-property.html

最新的objective-c文档的最佳去处可能是developer.apple.com...这是最新编程手册的链接:https://developer.apple.com/library/ios/documentation/Cocoa/Conceptual/ProgrammingWithObjectiveC/Introduction/Introduction.html

【讨论】:

    猜你喜欢
    • 2010-12-06
    • 1970-01-01
    • 1970-01-01
    • 2013-02-02
    • 2023-04-04
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多