iphone开发中常遇到的错误及解决方法(不断补充中⋯⋯)

相信刚开始进行iphone开发的各位童鞋,也会跟我一样,会常常遇到一些警告或错误提示,现将问题整理如下:

1.warning: 'UIViewController' may not respond to 'xxx'

这个错误是因为ObjC语言的特点导致的,ObjC不同于Java、.net、Flex等面向对象的语言,它源于C,语法相对严格,所以定义方法的时候,若被调用方法位于调用它的方法的后面,它会找不到,就报出这样的提示。

解决方法,在.m文件开始的地方,添加

@interface UIViewController()

- (void)xxx;

@end

其中红色字段,根据所报的警告提示替换,即可。

参考帖:http://stackoverflow.com/questions/5917747/warning-uiviewcontroller-may-not-respond-to-xxx

 


2.warning:'format not a string literal and no format arguments'

这个错误是跟XCODE的版本有关,在XCode 3.2.1以后系统中开发时,如果使用:

NSLog([NSString stringWithFormat:@"%@ %@, %@", errorMsgFormat,  error,  [error userInfo]]);

输出日志,往往会出现“format not a string literal and no format arguments”警告。遇到这种情况时,只需把调用方式改成:

NSLog([NSString stringWithFormat:@"%@ %@, %@", errorMsgFormat,  error,  [error userInfo]], nil); 即可。

参考帖:http://sheng.iteye.com/blog/965687

3.warning:'Failed to launch simulated application: Unknown error'

有时会遇到无法使用模拟器的未知错误,这个错误的发生我也没搞明白是为什么,这时只要改变一下product的名字,
一般就能解决问题。
参考帖:http://stackoverflow.com/questions/779115/iphone-failed-to-launch-simulated-application-unknown-error
4.error:'/Developer/Platforms/iPhoneSimulator.platform/Developer/usr/bin/g++-4.2 fail with exit code 1'

用C,C++,Objective-C三种C语言 3C混编的开发程序,在当然方法也和大家说一下吧,就是在Xcode环境中把C语言的.c文件,C++的.cpp文件与Objective-C的.m文件 的文件名全部修改成.mm,这样就可以启用Objective-C++的编译环境3C混编了,可是遇到了上述问题,网上的说法不一致,而且我也遇到了多次 这个问题,最后解决的方式也不一样,所以最后把所有可能的情况总结了一下:

  1)static方法名重复-因为C语言里没有对象的概念,它的方法只要加入相应的.h文件就可以使用,所以,如果和C++ or Objective-C的静态方法重名了,那么环境无法区分,很明显,这个错误是编译时候的错误,而对于static的变量及方法是在编译的时候便被加入的,所以无法识别.

  2)全局变量名重复,理由和上面是一样的,当然,如果是全局变量,建议在Objective-C的.m文件(当然现在被改成.mm了)中声名,不然,声明在.h中单独使用是没有问题的,如果直接引用了C or C++的.h,那么即使这时候全局变量不重复,也会出现上面的问题.

  3)含有多个main方法,main方法是程序的入口,如果有多个文件含有main方法,那么也会出现上面的问题.

    总的来说,这个问题是因为方法或是全局变量重复所导致的编译环境无法识别并编译

原帖地址:http://blog.163.com/fuxiaohui@126/blog/static/131745826201182711636919/

5.passing argument 1 of 'objectForKey:' from incompatible pointer type

这个警告是由于key的类型不正确, 去掉提示的方法很简单,就是强制转换一下。

例如:

[lbl setText:[til objectForKey:objID]];

更改为 [lbl setText:[til objectForKey:(NSString *)objID]];

6._OBJC_CLASS_$_MPMoviePlayerController 

这个错误是由于没有引用MediaPlay的Framework,添加即可。

7._kUTTypeImage 

这个错误是由于没有引用MobileCoreServices的Framework,添加即可。

 

 

 




 


posted on 2011-08-29 17:32  smellflower  阅读(2041)  评论(0编辑  收藏  举报

导航