文档章节

ios常见错误

Lambda8421
 Lambda8421
发布于 2015/01/27 15:27
字数 1577
阅读 36
收藏 0

1.An error was encountered while running (Domain = NSPOSIXErrorDomain, Code =3

这个error只要重启模拟器即可。

2.control reaches end of non-void function

这个错误是因为函数本来应该有返回值,而你没有return 语句。

3. Implicit declaration of function 'XX' is invalid in C99

    @1:一般出现该问题是因为通过C调用了unix/linux 底层接口,所以需要调整c语言的编译选项,设置方法见下图:(根据实际情况选择相应的编译选项)

    @2. 或者是方法的声明与调用不匹配,即C格式要采用C格式的调用法,Obj-C要采用Obj-C的调用格式。

转载:

整理了一个多月开发中的一些小问题,当然,本身遇到问题肯定还有更多,

比如类别的一些使用的技巧,协议格式的一些特殊字符,

同步于异步的网络处理的选择,数据的存储选择,类的设计。

因为其实大部分ios互联网应用的技术含量不会是很深奥,基本到后来发现就是对UI控件的一些需熟能生巧的应用,网络编程以及逻辑的处理,

更多的还有是一些经验和积累。

这边是几个早期的问题,也就是一个开发开始一个礼拜中一些问题我还做记载,后面一个月进度匆忙,也就懒于记录

1.UILabel中显示多行时,自动换行。

  1. label.numberOfLines =0;   
  2. label.lineBreakMode = UILineBreakModeWordWrap;  

前提是该label设置的frame是足够大的。不支持滚动。

理论上不支持这么做,因为TextView控件相对来说更好


2.nil和release区别

nil和release的作用:
nil就是把一个对象的指针置为空,只是切断了指针与内存中对象的联系;
而release才是真正通知内存释放这个对象。

所以nil并没有释放内存,只有release才回真正释放内存。
再分析一下二者使用的先后顺序:
如果没有release就直接nil,那么虽然不会出错,却等于自己制造内存泄漏了,因为nil之后release就已经不起作用了。

相反,如果在使用接口对象时只仅仅release没有设置self.myOutlet = 
nil,那么程序可能也不会报错,但却会十分不稳定、不健壮,很容易发生崩溃现象。

因为一个接口对象在release之后,给它所分配等内存就已经被释放了,如果释放之后系统再用到这个对象,那么程序就会crash。

如果释放之后把它的指针置为空,则即便后面的程序用到该对象,也不会崩溃。


3.获取当前时间和格式化

  1. NSString *postTime;  
  2.     NSDateFormatter *formatter = [[NSDateFormatteralloc] init];  
  3.     [formatter setDateFormat:@"YYYYMMddhhmmss"];  
  4.     postTime = [formatter stringFromDate:[NSDatedate]];<strong>  
  5. </strong>  

4.巧妙的运用宏,高效的预处理

5.关于版本控制工具Versions:Versions上FileMerger找不到路径的报错问题。

 应用会提醒建议重装,说没有安装这个工具,但是在Xcode下我们又是能发现该应用已经装了的。
最后网上查了下说是Xcode版本升级问题,导致应用路径该了,当时versions默认对filemerge路径没改。
剛剛把 Xcode 升級到 4.3.2 發現 Versions 的文件對比功能無法使用了。因為 Xcode 自從 4.3 之後整體打包成一個App放到了 /Applications 下面,過去的 /Developer 整個被建議刪除掉了。
Versions 按照原來的路徑沒辦法找到 FileMerge.app 所以搞罷工。處理起來很簡單,去命令行執行
sudo /usr/bin/xcode-select -switch /Applications/Xcode.app/Contents/Developer

6.项目编译时一种常见格式报错

Undefined symbols for architecture i386:
  "_OBJC_CLASS_$_ASIHTTPRequest", referenced from:
      objc-class-ref in ASIInputStream.o
      _OBJC_CLASS_$_ASIFormDataRequest in ASIFormDataRequest.o
      objc-class-ref in ASIFormDataRequest.o
      objc-class-ref in ASINetworkQueue.o
      objc-class-ref in ASIDownloadCache.o
      objc-class-ref in NLNetHelper.o
  "_OBJC_METACLASS_$_ASIHTTPRequest", referenced from:
      _OBJC_METACLASS_$_ASIFormDataRequest in ASIFormDataRequest.o
  "_NetworkRequestErrorDomain", referenced from:
      -[ASIFormDataRequest addFile:withFileName:andContentType:forKey:] in 
这是我们在引入第三方类库文件时,build后错误。比如引入_ASIHTTPRequest和SBJson时。
如果出现以上错误了,比较简单的方法就是。点击项目,--》build Phase s--》compile sources中,点击add后,我们能看到项目下的源文件,此时,建议把你能看到后缀为.m文件全add了~~。
后来发现同事引入时没没什么问题,经提醒发现一个一直被我忽略的问题,就是拖动文件进来时,一般我们是选了非引入而是copy一份,这个没问题,但是下面海域个选矿,addtarget。这个记得勾上,因为关系到项目的一些配置,我估计是就是这个原因。


7.ios客户端于java服务端交互关于null的的问题

在ios网络操作时解析json时,有时会有这样额一种情况: “myThing”:null;
而myThing根据情况分成:1,在有返回的时候是一个字典;2若无内容,返回null。
然后我们在客户端处理是需要判断是佛为null才能来做相应的解析(如果null依旧去解析这个自定则会报错),但是仅仅的一句 if(dic)并不试用。
必须[Dic  isEqual: [NSNull null]]

这个其实是指针空于内容空的一种区别。一般来说我们在判断指针空是用nil,而内容空则是NSNull

8.判断字窜A中是否包含字窜B

暂时没找到java中的包含函数
oc提供了一个rangeOfString。然后看length长度。

9.关于ViewController之间交互,数据的传递

在Android我们知道两个Activity之间可以使用bundle来传递,iOS中其实提供了很多解决方法.

但是后来发现最简单的一种就是,我们在第二个ViewController中申明一个这样的属性,

在第第一个ViewController中初始化第二个vc后,设置进去要传递的数据就可以了~

当然,用一个全局或是单例类存放在某些情况下会很合适。


10.NSNotificationCenter的妙用和小技巧

    [[NSNotificationCenter defaultCenter] addObserver:self selector:@selector(refeshLogin) name:@"login" object:nil];

消息的注册和监听,以及发送通知调用post发送然后监听处理。

我觉得善用这个类很美妙。

© 著作权归作者所有

Lambda8421
粉丝 10
博文 121
码字总数 121640
作品 0
闸北
程序员
私信 提问
QMUI iOS UI 框架正式发布

QMUI iOS QMUI iOS 是一个致力于提高项目 iOS UI 开发效率的解决方案,其设计目是用于辅助快速搭建一个具备基本设计还原效果的 iOS 项目,同时利用自身提供的丰富控件及兼容处理,让开发者能...

kayo5994
2017/01/03
3.9K
2
iOS简单音乐实现、React-Native完整项目、仿闲鱼京东列表分页、语音识别、网络加载过度动画等源码

iOS精选源码 iOS快速入手语音识别、听写、评测、播报 网络加载数据的过渡动画(仿简书网页) iOS 封装跑马灯和轮播效果 crash防护组件,适用常见常用的数组,字典等crash保护 iOS:高仿闲鱼、...

Code4app
2018/09/26
0
0
2018 iOS 面试题大全(补充完整版)

原文地址:2018 iOS 面试题大全 由于原作者并没有继续更新,这里我转过来继续更新下 这个栏目将持续更新--请iOS的小伙伴关注! 1、iOS 应用导航模式有哪些? 2、iOS 中持久化方式有哪些? 3、...

Theendisthebegi
2018/11/15
0
0
ZipperDown漏洞来了!微博、陌陌、快手等常用 iOS 应用恐要中招

雷锋网(公众号:雷锋网)消息,5月15日,盘古实验室对外宣布,他们在针对不同客户的 iOS 应用安全审计过程中,发现了一类通用的安全漏洞---ZipperDown漏洞。 10%的iOS应用可能受ZipperDow...

郭佳
2018/05/15
0
0
如何判断你是合格的高级iOS开发工程师?

前言 随着移动互联网的高速发展泄洪而来,有意学习移动开发的人越来越多了,竞争也是越来越大,需要学习的东西很多。如何才能在激烈的移动开发者竞争中一枝独秀,成为一名真正合格的高级iOS...

_小迷糊
2018/05/26
0
0

没有更多内容

加载失败,请刷新页面

加载更多

IT兄弟连 HTML5教程 HTML5表单 小结及习题

小结 HTML表单提交的方法有get方法和post方法,get方法的作用是从指定的资源请求数据,post方法的作用是向指定的资源提交要被处理的数据。HTML表单一直都是Web的核心技术之一,有了它我们才能...

老码农的一亩三分地
28分钟前
14
0
向maven工程中导入自己封装好的jar包方法

1.打开cmd窗口 输入并执行:mvn install:install-file -DgroupId=com.test   -DartifactId=ptest -Dversion=0.1  -Dfile=E:\test\test-0.1.0.jar    -Dpackaging=jar注:Dgr......

gantaos
30分钟前
3
0
【jQuery基础学习】09 jQuery与前端(这章很水)

本文转载于:专业的前端网站➨【jQuery基础学习】09 jQuery与前端(这章很水) 这章主要是将如何将jQuery应用到网站中,或者说其实就是一些前端知识,对于我这种后端程序来说其实还是蛮有用的...

前端老手
41分钟前
11
0
深度科技与金山云完成兼容互认证 共同促进我国软件生态发展

近日,深度科技与金山云完成兼容互认证工作,经双方共同严格测试,深度操作系统ARM服务器版软件V15与金山云分布式数据库软件DragonBase V1.0相互兼容、稳定运行,可以为企业级应用提供全面保...

后浪涛涛
42分钟前
8
0
Less导入选项

Less 提供了CSS @import CSS规则的几个扩展,以提供更多的灵活性来处理外部文件。 语法: @import (keyword) "filename"; 以下是导入指令的相关详情: reference,使用较少的文件但不输出。 ...

凌兮洛
58分钟前
16
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部