陈斌彬的技术博客

Stay foolish,stay hungry

iOS开发过程中出现错误整理

目录

  • No architectures to compile for …
  • CodeSign error: code signing is required for product type ‘Application’ in SDK ‘iOS 5.0’
  • While reading /Users/abel/.……..png pngcrush caught libpng error: Not a PNG

1、No architectures to compile for (ONLY_ACTIVE_ARCH=YES, active arch=armv7s, VALID_ARCHS=armv7 armv6).

真机调试就报 No architectures to compile for (ONLY_ACTIVE_ARCH=YES, active arch=armv7s, VALID_ARCHS=armv7 armv6)错误。虚拟机没事,一旦用真机就报这个错误,开始以为是我安装几个软件之后,安装不成功,系统问题。然后就是重装系统,都不成功。最终解决办法:

1.把Build Active Architecture Only 下面的Debug 设为NO release 设置为YES

2.Valid Architectures 设置为 armv7 armv6 就OK 了。

2、Xcode编译出现错误如下:CodeSign error: code signing is required for product type ‘Application’ in SDK ‘iOS 5.0’

解决方法如下:

选择工程->Build Settings -> Code Signing -> Code Signing Identity -> Debug -> Any ios SDK 将选项改为:iPhone Developer

3、While reading /Users/abel/.……..png pngcrush caught libpng error: Not a PNG filCould not find file: /Users/abel/Library/Developer/Xcode/.…..Default.pngCommand /Applications/Xcode.app/Contents/Developer/Platforms/iPhoneOS.platform/Developer/usr/bin/copypng emitted errors but did not return a nonzero exit code to indicate failure

报这个错误是因为我把一张本身为jpg的图片的名字修改成png后缀了。

將 Xcode 升级到最新的 5.1,在使用AFNetworking时遇到了 property synthesis 相关的 error,错误信息如下:

4、Auto property synthesis will not synthesize property ‘request’ because it is ‘readwrite’ but it will be synthesized ‘readonly’ via another property

Auto property synthesis will not synthesize property ‘response’ because it is ‘readwrite’ but it will be synthesized ‘readonly’ via another property

在AFHTTPRequestOperation中定义了:

@property (readwrite, nonatomic, strong) NSURLRequest *request;
@property (readwrite, nonatomic, strong) NSHTTPURLResponse *response;

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

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

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

@implementation AFHTTPRequestOperation
@dynamic response;
@dynamic request;
@end

5、“Your build settings specify a provisioning profile with the UUID “”, however, no such provisioning profile was found”

在Archive项目时,出现了“Your build settings specify a provisioning profile with the UUID “”, however, no such provisioning profile was found”的出错。一直提示指定UUID的provisioning profile找不到,感觉很奇怪。明明自己的provisioning profile是刚下载好的,并且全是新安装。于是通过谷歌找到了答案。

参考地址:http://stackoverflow.com/questions/1760518/codesign-error-provisioning-profile-cannot-be-found-after-deleting-expired-prof 这里所说的就是要通过修改你的项目的.xcodeproj文件来解决上述的错误。

  • 找到项目中的**.xcodeproj文件,点击右键,show package contents(打开包内容)。
  • 打开后找到project.pbxproj文件,用文本编辑器打开。其实就是右键,点击open就好了。
  • 打开这个文件后,按command+F,在这个文件中查找“PROVISIONING_PROFILE”,找到和这个“ PROVISIONING_PROFILE = “487F3EAC-05FB-4A2A-9EA0-31F1F35760EB”; “PROVISIONING_PROFILE[sdk=iphoneos*]” = “487F3EAC-05FB-4A2A-9EA0-31F1F35760EB”;”类似的都删除。
  • 然后保存文件,重新打开项目。xcode会提示你重新下载安装provisioning profile文件。下载后安装上就可以。

Resource Reference