<分区>
标签 objective-c ios
我是 Objective C 的新手,无论如何都不是 super 程序员,但我觉得奇怪的一件事是,当对象被声明为未初始化时,它有时不会抛出错误。
我又遇到了这个 - 我有一些设置要完成,所以我把它放在 init
函数中 - 但是这个类是一个 UIViewController
在 Storyboard 中连接起来。所以 init
从未被调用过——这是我的错误——(项目中有很多 NSObject
派生类,我匆忙把它扔进去测试一些东西)。
但是我的方法调用了本应在 int
中设置的实例并没有抛出错误 - 只是我期望的值为 nil。
那种东西会悄无声息地失败,这不是很奇怪吗?
最佳答案
这里有两个不同的问题,对于初学者来说都很常见。
您的 init
从未被调用,因为它完全是错误的方法。它不是 View Controller 的指定初始化程序,并且在任何情况下,来自 nib 或 Storyboard的 View Controller 都会获取 initWithCoder:
。因此,您应该了解将调用什么方法以及何时调用。
发送给 nil 的消息返回 nil 且没有错误。这是 Objective-C 根深蒂固的特性,不会改变。经常有关于它的准宗教辩论,并且有一些聪明的方法来解决它,但那既不存在也不存在。基本上,是否使用大量 NSLog 和大量 nil-checking(NSAssert 非常适合用于此)取决于您,尤其是在早期阶段。
关于objective-c - Objective C 没有抛出足够多的错误?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9753378/
相关文章:
ios - 从另一个 View Controller 导航栏加载 View Controller 的 UIWebView 中的请求 url
ios - 在隐藏状态栏的同时保持 UINavigationBar 的大小
ios - 在 ios web 服务的 NSURL 连接上使用 web 服务库(RESTKIT/ASIHTTP 请求)的优点
ios - UITextView 在 iPhone 5/5s 上切断文本,但在 iPhone 6 上没有
iphone - 如何使用 addSubview 在 UIScrollView 中添加按钮?
ios - 替换 WatchKit 中分层导航堆栈中的 Controller
ios - UIWebView - 如何在 iPad 上显示 iPhone 大小的内容