欢迎访问诺博源,专业从事IT高端互联网研发与实训机构!

位置:主页 > 常见问题 >

谨慎使用IOS开发中重写init方法

时间:2016-04-20 浏览量:
    谨慎使用IOS开发中重写init方法。作为程序员我们每天都会遇到这样那样的一些小问题,下面这个程序猿也是一样,关于“使用IOS开发中重写init方法”有哪些是需要注意的呢?来看看他是怎么讲的吧。

   今天在写一个小软件的时候出现一点问题,这个软件的功能是搜索全国学校,首页就是搜索输入框,在框中输入完要查询的学校所在省份,点击buttom后就 会跳转到对应的视图控制器中,然后把搜索结果呈现在一个TableView上,但是我在调试时,每次输入完然后点击搜索按钮时,弹出结果列表总是空的,我 需要返回到首页再点击一次搜索才会出现结果,而且我在首页更改搜索关键字之后,点击搜索,结果还是上次的搜索结果,必须返回点击一次才会出现这次的搜索结 果。
  经过大神指点,原来这个问题产生的原因是我错误的使用了重写init方法。我重写的方法如下,原本打算是在初始化的时候就给view一个标题和背景色:
  复制代码
  1 //自定义初始化
  2 -(instancetype)init{
  3     if (self = [super init]) {
  4         self.view.backgroundColor = SCreenColorMyGray;
  5         self.title = @"搜索";
  6     }
  7     return self;
  8 }
  复制代码
  但问题恰恰出现在这个重写的初始化方法中,具体分析如下:
  先在首页中创建一个搜索页面:
  1 ResultTableViewController *resultTableVC = [[ResultTableViewController alloc]init];
   这时候就已经出现问题了,因为这时候就会调用init方法,如果我不重写init方法,默认就走viewdidload,这时候就是正确的,但是 由于我的自定义方法中有一个self.view,这时候其实还没有view,所以调用self.view之后就会先去创建一个view,这时候就会调用到 一个方法:-(void)loadView,而这个方法就是加载view,就相当于这时候已经把我要push的界面先呈现出来了,但是由于我还没有往过传 数据,所以就会导致搜索结果列表中什么都没有,所以在使用自定义init方法的时候一定要谨慎使用self.view这样的语句,有时候会导致无法预期的 错误,而又因为这样的错误对计算机来所不是错误,只是编程者的逻辑错误,所以陷入这样的bug之后很难pop出来。
  作为行业新人,我们把自己在工作中犯的错都记录下来,这样在下次再遇到类似情况的时候就不会再上一次犯错的地方出错了,加深记忆滚顾思考!
PHP开班信息
PHP实训全日制班

[php高级工程师班]2017-6-23热招中

[PHP工程师就业班]2017-6-23热招中

[php开发工程师班]2017-6-23热招中

Web前端实训班

[Web前端全日制班]2017-6-23热招中

[Web前端业余班]2017-6-23热招中

[Web前端实训晚班]2017-6-23热招中

PHP实训业余班

[PHP工程师名企定制班]2017-6-23热招中

[php开发工程师业余班]2017-6-23热招中

[PHP工程师晚班]2017-6-23热招中

在线预约报名 联系人 性别 联系电话 联系QQ