回答
这可能是你的笔尖混乱了,但我发现一个常见的原因是有两个实例,你认为你只有一个实例,而你在代码中使用的实例不是你连接的实例。
如果您还定义了创建视图的loadView
方法,可以根据初始化方法进行。如果使用alloc-init
对它初始化,并且nib名称与类名称不同,那么可以有一个情况,即插座为零。但查克的回答似乎更合理的假设。
一种可能性: 假设IBOutlet中的容器是一个像一个功能一个单独的对象:
+ (singletonObject*) sharedInstance {
if(!gGlobalSingletonPointer) {
gGlobalSingletonPointer = [[singletonObject alloc] init];
}
return gGlobalSingletonPointer;
}
你“按需”创建单独的对象,如果它不存在。 您可以在该函数中为其创建一个全局指针。
如果您还在InterfaceBuilder中实例化了这样一个对象,并连接其插座,则将创建该对象而不调用 sharedInstance。如果您随后调用sharedInstance,则会创建一个新的对象(sans IBOutlet连接)。
解决的办法是更新singletonObject的init或awakeFromNib函数中的全局指针。
您使用的是UINavigationController吗?
如果是这样,请在IB中打开MainWindow.xib,并确保在属性检查器中正确设置了根控制器的nib名称。
为什么不能正确设置?一个原因是'重命名'重构不会更新这个,然后内部将不会找到用于连接您的用户界面的笔尖。或者你自己重新命名了笔尖,并没有更新这个字段。
我刚刚被刺住的一个原因是:如果nib文件由于某种原因未被包含在目标资源文件中(例如,当您将目标添加到项目时没有选中目标),Xcode不会引发错误但是这个笔尖的所有插口都将是空的...
你是否在与File's Owner做一些不寻常的事情?如果您不在situations where the nib is loaded automatically(由应用程序加载的主要笔尖或由视图控制器,文档或窗口控制器加载的笔尖)之一,则您必须load the nib programmatically。
- 1. 产生的原因:java.lang.NumberFormatException:无效的双:“”
- 2. 无效的JSON - 看不到原因
- 3. 原因:org.eclipse.swt.SWTException:无效的线程访问
- 4. Tableview更新'NSInternalInconsistencyException',原因:'无效的更新:无效的行数?
- 5. 捆绑无效负载原因:0x80070570
- 6. Google Cloud DNS Bad Request原因无效
- 7. SAML SSO失败 - “原因:目标无效。”
- 8. 消息[无效值]位置[ - ]原因[无效]域[global]
- 9. 由于IBOutlet的原因,iOS应用程序在didFinishLaunchingWithOptions中崩溃
- 10. 我无法理解ORA-01722背后的原因:无效号码
- 11. XMLReader显示无效的XML,如何得到无效的XML的原因?
- 12. 无法部署到Google App Engine - 请求无效,原因不明
- 13. “无效的正则表达式...原因中的R
- 14. “com.microsoft.sqlserver.jdbc.SQLServerException:无效的对象名称”的所有可能原因
- 15. 产生的原因:com.microsoft.sqlserver.jdbc.SQLServerException:无效的对象名称springboot.USERS“
- 16. “movq”的后缀或操作数无效的原因是什么?
- 17. 任何为无效的函数声明constexpr的原因?
- 18. 可能的原因为“StreamCorruptedException:无效的流头”
- 19. 产生的原因:javax.websocket.DeploymentException:路径[的WebSocket]无效
- 20. “无效的对象名称:dbo.etc”错误的根本原因?
- 21. AWS SDK-的NodeJS - 无效参数:PlatformApplicationArn原因:错误号的ARN
- 22. JQuery验证MVC4如何找出mvc表单无效的原因
- 23. 如何查看表单无效的原因
- 24. 'NSInvalidArgumentException',原因:'无效的类型在JSON写(_SwiftValue)'与alamofire swift3
- 25. time.sleep()函数显然是导致语法无效的原因
- 26. Twitter API - “无效或过期令牌”的原因
- 27. Gradle同步失败:原因:无效的CEN头(坏签名)
- 28. glFramebufferTexture2D返回无效状态与EAGLContext的其他原因?
- 29. “EOSError 1400 - 窗口句柄无效”的可能原因
- 30. 如何通过symfony 1.4获得无效表单的原因?
“两个实例”场景的一个常见原因是在代码中创建控制器实例,并在加载笔尖时使其成为笔尖的所有者。然后,在IB中创建另一个控制器实例并连接到该网点,而不是“文件所有者”。 – 2011-06-03 12:23:20
或者,在另一个笔尖中创建一个实例,然后将其中一个实例挂钩,并发现该插口在另一个笔记本中为“nil”。另一种可能性是,您只创建了一次对象,但尚未加载它将是所有者的笔尖。 – 2011-06-04 01:45:35