iOS问题集合

这是我的第一篇博客文章, 今天就来分享一下我遇到过的iOS开发中的小问题,我对它们进行了简单的整理,以后会继续更新补充


状态栏问题

<1> iOS7 状态栏颜色

1Info.plist中设置UIViewControllerBasedStatusBarAppearanceNO

2 在需要改变状态栏颜色的ViewController中在ViewDidLoad方法中增加:

[UIApplication sharedApplication] setStatusBarStyle:UIStatusBarStyleLightContent];

如果需要在全部View中都变色,可以写在父类的相关方法中。


UIScrollView问题


ios7上, 滚动视图中内容默认会向下移动44个点显示, 既会留空44个点


self.automaticallyAdjustsScrollViewInsets =YES;



按钮问题


<1>按钮没有显示,一点就崩

          检查是不是释放了按钮


<2>按钮能显示,但是点击后奔溃

          90%可能性 方法名写错了(少了:号)


<3>按钮点击了之后没有反应

          没有addTarget


要么事件的类型写错了


也有可能是添加到了 UIImageView上




标签栏问题


<1> ios6上隐藏的标签栏之后出现空白区域, 需要设置其中某个view的frame


===========================================================================


Xcode问题


<1>编辑器突然不显示提示

前面的代码可能写错了



模拟器的问题

<1>Simulator in use  ----> 模拟器正在使用

运行当前工程的时候, 另外一个工程也在运行程序


<2> pch问题, 

删除这个pch文件即可


关闭xcode, 删除这个文件夹, 清空废纸篓, 重启Xcode

/Users/mac/Library/Developer/Xcode/DerivedData/ModuleCache/



<3> 连接不上模拟器

重启模拟器即可


编译问题


<1> symbol not found 符号没有找到,  肯定是依赖库没有添加


<2> duplicate symbol 重复包含了某个符号, 也许是import了m文件


<3> Warning: Multiple build commands for output file有重复的图片, 删除重复的图片即可



运行问题

<1> BAD_ADDRESS_ACCESS  使用无效的地址, 往往是对象过早释放了


<2>unrecognized selector问题 


reason: '-[UIView didReceiveMemoryWarning]: unrecognized selector sent to instance 0x8ae4440'

给一个对象发送消息的时候无法执行消息, 往往要么没有实现方法, 或者这个对象根本就是不是希望的对象


 Undefined symbols for architecture i386:

“_OBJC_CLASS_$_XXX”, referenced from:

objc-class-ref in XXX

ld: symbol(s) not found for architecture i386

clang: error: linker command failed with exit code 1 (use -v to see invocation)

这个错误的发生原因一般是“XXX”这个文件(类库)虽然引入了工程中,但是由于种种原因(常见于多人开发,svn同步不规范)导致“XXX”并未被添加到project.pbxproj这个文件中。

解决方法是点击工程,在targets界面中找到Build Phases,根据提示信息“XXX”来判断缺少什么文件,一般如果缺少自定义的文件,XXX会是缺少的类名,那么就在Complie Sources中加入该文件。如果缺少类库,则在Link Binary With Libraries中加入该类库。


比如当XXX为CTTelephonyNetworkInfo就应该添加CoreTelephony.framework框架

_CLLocationManager就应该添加CoreLocation.framework框架


编译出Framework是,需要把 GenerateDebugSymbolsNO,否则会出现很多 warning:

类似


warning: (armv6) /Users/myuser/Library/Developer/Xcode/DerivedData/ ....build/Objects-normal/armv6/ImageRequest.o unable to open object file


Note: 对于编译 Framework, 选项 Build Settings Build Active Architecture Only" must beNo !!!



在使用AFNetworking时遇到了 property synthesis 相关的error,错误信息如下:

Auto property synthesis will not synthesize property 'streamStatus' because it is 'readwrite' but it will be synthesized 'readonly' via another property

Auto property synthesis will not synthesize property 'streamError' because it is 'readwrite' but it will be synthesized 'readonly' via another property

AFMultipartBodyStream中定义了:

@property (nonatomic,assign)NSStreamStatus streamStatus;

@property (nonatomic,strong)NSError *streamError;


就是这样的代码,会让 request property 出现 warning。原因是因为 compiler 读取 sub-class 時,会发现 request 明明应该是個 readonly propertysuper-class 讲的),但你却要将它设为 readwriteproperty,所以 compiler 不知道该怎么 auto synthesis

但你知道 super-class 的实现,也会将这个 property 改成 readwrite,因此你在 sub-class的实现里这样子写是不会有问题的。可是 compiler 不知道啊,這要怎么办呢?

你要告诉 compiler,要它不用担心。那要怎么告诉 compiler 呢?你需要的是 @dynamic,它是一种给 compiler 的「承诺」,承诺它「虽然你现在不知道该怎么办,但是在 runtime 的时候你就会知道了」。所以只要把代码改成以下这样就可以了:

@implementation AFMultipartBodyStream

@dynamic streamStatus;

@dynamic streamError;



argument to nsmutablearray method addobject cannot be nil 警告

You cannot add nil to an NSMutableArray, and you will raise an exception if you try to.

There's NSNull, though:

NSNull*myNull =[NSNull null];[myMutableArray addObject:myNull];


nsmutablearray不能添加nil可以是nsnull,所以在向nsmutablearray中添加string时候需要判断一下string是否是nil的然后再添加

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值