zoukankan      html  css  js  c++  java
  • iPhone开发错误集

           开始iPhone的Practise Project,其中有很多的问题,先记录起来,以免以后再犯:

          1.  EXC_BAD_ACCESS:

          发生场景1:一个指针转了两次,release了两次,其实只要release一次就可以。或者用指针时避免到处赋值。

          发生场景2:在一个View Controller A里动态加载另外一个View Controller B, B中无法使用UITableViewDelegate。

         2.  Debug里出现一批Leaking的警告错误:

         发生场景:使用了NSThread造成的。如下调用:

        [NSThreaddetachNewThreadSelector:@selector(scheduleTask) toTarget:selfwithObject:nil]; 

          那么在-(void) scheduleTask;中比如加入pool管理,即可防止出现此类错误:

          -(void) scheduleTask {

          //create a pool 

          NSAutoreleasePool *pool = [[NSAutoreleasePoolalloc] init];

             //...your code write here. 

          //release the pool;

          [pool release];

           }

         3. 在非主线程中,不要干创建UIView之类的活,而应该放到主线程去做,可以在非主线程里做UIView的显示更新等操作。

         4. 循环读取数据到数组时,请不要用以下方式(会报Leaks):

    while (sqlite3_step(statment) == SQLITE_ROW) {
                City *city  = [[City alloc] init];

               
    //取值

               [citys addObject:city];

                [city release];
                city 
    = nil;

       而应该用如下方式:

     City *city;

    while (sqlite3_step(statment) == SQLITE_ROW) {
                city  
    = [[City alloc] init];

               
    //取值

               [citys addObject:city];

                [city release];
                city 
    = nil;

        5. Xcode 项目连上SCM后,提交时出现“125001 bogus filename ” 错误,什么path含有'.',目前尚未解决。

        6. 数据里定义一个实体对象,不能直接取这个对象的某个属性。

        7.当用以下代码跳转View的时候,在跳转的Controller里需要屏蔽initWithNibName 方法,否则View无法显示。

     代码

        8. 用sqlite时,出现Undefined symbols: “_sqlite3_free”, referenced from: , 类似错误,后查询发现,忘了把把sqlite的库文件引用来项目里。

        9. 关于超时:当用如下方式设置request的timeout时,发现根本不起作用,timeout依然是默认的240秒。碰到这类问题,可用NSTimer来控制是否超时,然后进行处理。

     NSMutableURLRequest *request = [[NSMutableURLRequestalloc] initWithURL:[NSURLURLWithString:URI] cachePolicy:NSURLRequestReloadIgnoringLocalAndRemoteCacheDatatimeoutInterval:5.0f]; 

        10.代码检查:

    If you're using xCode 3.2 and above in the build menu you can just select build & analyze, and it will give you the results in the build results. 

        11. UITableView中,实现该方法时注意- (UITableViewCell *)tableView:(UITableView *)tableView 

             cellForRowAtIndexPath:(NSIndexPath *)indexPath

               如果cell里有新添加的控件,只需要在第一次添加,每次滚动时改变控件里的显示值即可。

    如:代码

       12. 在tableView的Cell中使用自定义的View时,如果tableView有删除新增动作时,table row的内容会显示混乱。

       13. 在UIViewController里添加子UIViewController时,不需要子UIViewController进行释放。 当把子View移除时,第一次会调用dealloc,此后每次add,remove都不再调用dealloc。估计是ios的缓存。

       14. UITableView为group类型时,要想收缩或者展开某一个section,需用一个取巧的方式,比如设置section的高度,然后再reload section。网上用beginEdit,和endEdit来实现,不过整个tableview都会刷新,感觉用户体验不太好。


    id 博主 = [[KILONET.CNBLOGS.COM alloc] initWithValue:@"天堂向右,我依然向左"

                  网名:@"老舟"

                  兴趣:@"影音,阅读"

                  动态:@"系统架构设计,Android通信模块开发"

                  网址:@"http://kilonet.cnblogs.com"
                  签名:@"--------------------------------------------------

                                  Stay Hungry , Stay Foolish

                                  求  知  若  渴,处  事  若  愚

                              --------------------------------------------------"

                  ];         // Never Release

  • 相关阅读:
    TensorFlow(十五):使用inception-v3实现各种图像识别
    TensorFlow(十四):谷歌图像识别网络inception-v3下载与查看结构
    TensorFlow(十三):模型的保存与载入
    TensorFlow(十二):使用RNN实现手写数字识别
    TensorFlow(十一):递归神经网络(RNN与LSTM)
    TensorFlow(十):卷积神经网络实现手写数字识别以及可视化
    ffmpeg-20160628-git-bin.7z
    ffmpeg-20160617-git-bin.7z ffmpeg-20160626-git-bin.7z
    欧洲杯 2016 高清直播
    YY 神曲 李明霖 14部合集
  • 原文地址:https://www.cnblogs.com/KiloNet/p/1798324.html
Copyright © 2011-2022 走看看