最近在做新浪微博的一个工具(iOS),为了快速上手,就把新浪微博授权的代码写在了viewDidLoad方法中,结果害得我花了2天时间,怎么设置都不行,最后把授权的代码写在在自定义的方法中,程序运行起来后,点击一个button来触发这个方法,这样就可以进行授权了。有哪位知道这是为什么?
你在viewDidLoad里面设置一个断点,一步一步走,然后你多半会发现,某个变量是nil。
好好看看文档关于View加载顺序的部分,同时可以在各个函数里面放上NSLog,研究一下
看样子肯定是因为放在viewDidLoad的位置先于某个变量还没有初始化完毕。放在自定义方法中是因为view里涉及的所有资源都初始化完了。
老实说,这种bug也要花两天的话,你解决问题的方法还是很有问题。就算像tiny说的逐行断点/NSLog也不至于要两天。况且还那么明显以听就知道是所依赖的变量/资源未初始化的原因。
天底下最笨也是最万能的调试方法就是逐行打印日志,除非是多线程竞争条件造成的,否则肯定能直接找到问题所在。