【问题标题】:Duplicate NSLog entries重复的 NSLog 条目
【发布时间】:2011-04-30 19:46:52
【问题描述】:

我不知道我是否可以在此处包含与我的项目相关的代码,因为我的项目如此之大,但是否有任何典型原因导致NSLog 会重复一些警告并在只有一次调用的情况下调用它/发生错误?

例如,我有一个 NSBox 的子类,它在 awakeFromNib 上初始化另一个类的实例:

- (void) awakeFromNib {
    burbControllerInstance = [[BurbController alloc] init];
    if (burbControllerInstance) {
        NSLog(@"init ok");
    }
}

我得到NSLog 两次打印“init ok”。我不明白为什么这个子类会在我的项目中的任何地方被“唤醒”两次。这是一个更大问题的一部分,我无法从我正在创建实例的类中获取变量以返回除 nil 之外的任何内容。我想知道双值是否与它有关。

【问题讨论】:

  • 你是从那个类派生的吗?
  • 定义派生。如,检索变量?不,我正在调用 BurbController 类中的一个方法,该方法会更改一堆仅与该类相关的变量。当方法在自己的类中运行时,它们保存正确的数据,但当我从我的 NSBox 子类调用方法时,它们保存“nil”。
  • 不,我不相信。我在我的界面中只为一个对象将NSbox 子类化,并且我只在这个对象中否决了与NSBox 的打印和分页相关的方法。我看不出它会在应用程序启动时被唤醒两次。

标签: objective-c cocoa nslog awakefromnib


【解决方案1】:

This post 可能会有所帮助,我。 e.一条评论:

同样重要的是:awakeFromNib 可以是 多次调用 如果您使用相同的控制器 几个笔尖的控制器——比如说, 您正在使用应用程序委托作为 应用程序的 About Box 和 首选项对话框。所以你需要一个 如果你使用额外的保护测试 awakeFromNib 除了 初始化 nib 对象

更新:更有趣的还有this,作者提到awakeFromNib 被称为两次。不幸的是,对于这个特定问题没有真正的答案,但也许有一些基本的想法。

更新 #2: stackoverflow.com 的另一个潜在解决方案:View Controller calls awakeFromNib twice.

【讨论】:

  • 啊哈,最后一个链接帮了大忙。它给出了我不需要像往常那样通过 nib 调色板初始化我的子类的想法。所以发生的事情是我的对象在我的界面和笔尖调色板中启动了笔尖。这是我养成的一个坏习惯。谢谢!现在要弄清楚为什么我的变量仍然没有返回值......
  • @biscuitstack:好的,这也是我询问从该类派生时的意图。通常在这种情况下会初始化多个对象。
  • 明白了。谢谢,我还没有那么久,所以有时只有当它们被更具体地拼写出来时才能抓住它们。
  • 没问题,尤其是大型项目有时会有些困难。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2017-08-04
  • 1970-01-01
  • 2021-01-22
  • 1970-01-01
  • 2017-11-02
  • 2016-06-26
相关资源
最近更新 更多