BUG

来源:互联网 发布:怎么看mysql的密码 编辑:程序博客网 时间:2024/04/29 18:13
1~
 

Undefined symbols for architecture armv7s

特酷吧在将之前的程序做iphone5适配的时候,出现了如下的错误:
ld: warning: ignoring file /lib/libavcodec.a, file was built for archive which is not the architecture being linked (armv7s): /lib/libavcodec.a
ld: warning: ignoring file /lib/libavdevice.a, file was built for archive which is not the architecture being linked (armv7s): /lib/libavdevice.a
ld: file is universal (3 slices) but does not contain a(n) armv7s slice: /file/location for architecture armv7s clang: error: linker command failed with exit code 1 (use -v to see invocation)
这里的armv7s指的是iphone5框架,错误的大体意思就是引用的第三方库文件不符合armv7s的要求。
我的理解:armv7s是IOS框架指令集,下面列举了IOS的硬件适配对应关系:
armv6:iPhone 2G/3G,iPod 1G/2G
armv7:iPhone 3GS/4/4s,iPod 3G/4G,iPad 1G/2G/3G
armv7s:iPhone5
一般真机测试时,如果报armv7s错误,一般都是因为armv7s指令集是打开的,而之前一些引用库都是使用armv7s之前的指令集编译的(当这些引用的外部库使用armv7s指令集编译后,就不会出现该问题)。
解决办法如下1,2都可以:
1,[去掉armv7s指令集支持]xcode-->"Build Settings"-->"Valid Architectures"中把armv7s去掉(可能使程序无法适配iPhone5)。
2,[兼容armv7s]PROJECT-Build Setting,然后把Build Active Architecture Only的值设置为Yes。


XCODE编译的时候报错:duplicate symbols for architecture armv7
1、首先排查是否有名字重复的文件;
2、检查是否在#import头文件的时候,不小心把.h写成了.m。


reason: ‘*** Collection <__NSArrayM: 0xb550c30> was mutated while being enumerated.’

当程序出现这个提示的时候,是因为你一边便利数组,又同时修改这个数组里面的内容,导致崩溃,网上的方法如下:

1
2
3
4
5
6
7
8
9
NSMutableArray * arrayTemp = xxx;
 
NSArray * array = [NSArray arrayWithArray: arrayTemp];
 
for (NSDictionary * dic in array) {
   if (condition){
      [arrayTemp removeObject:dic];
   }
}

这种方法就是在定义一个一模一样的数组,便利数组A然后操作数组B


0 0
原创粉丝点击