• [汇]编译错误汇总


    1、"std::ios_base::Init::~Init()", referenced from

    出现这样的编译问题,是需要再加进libstdc++.dylib和libstdc++.6.dylib(为6.1使用,xcode5以后默认complier也可以编译通过)

    2、apple Mach-o Linker error通常是因为compile source中有相同的.m文件

    3、如果在真机中进行测试时出现failed to get the task for process,有可能是证书出了问题。

    4、如果出现expect a type的错误,可能出现了在.h文件中的循环引用。

    5、以后不能同时有两个一样的.m文件在编译,这样会报linker command failed with exit code 1 (use -vto see invocation)这个错误

    (另外:如果代码中混合有C或者C++代码,那么,也不可以在两个不同名称的mm文件中进行声明或者引用,因为也会导致这个错误的发生)。

    6. 编译器提示类似file is universal but does not contain a(n) armv6 slice for architecture armv6的错误。可能是您的XCode版本过低,推荐使用4.2以上的版本,将XCode的Build Settings中的Architectures设置成arm7。

    7. XCode提示有类似C++语法的错误。可能是您在调用接口时没有设置成OC与C++混编模式(具体做法为将调用接口的实现文件改为.mm的后缀)。

    8. 提示类似ld: 3 duplicate symbols for architecture i386(arm7)的错误。可能是您用了与SDK相同的第三方库,解决方法是删除引起错误的第三方法库的实现文件(.m文件)。

    9. 编译器提示类似file is universal (2 slices) but does not contain a(n) armv7s slice:…… for architecture armv7s的错误。是因为此版本的库还不支持arm7s的环境,将Build Settings项中的Valid ArchiteCtures中的arm7s删除即可解决。

    10. 编译器提示类似Duplicate symbol _NN_Decode in /Users/…/libPPUserPayKit.a(UPPayRsa_nn.o)  for architecture armv7或Command /Developer/…/bin/llvm-g++-4.2 failed with exit code 1的错误。则是因为C++混编模式引起的,您可以将Build Settings 设置项里面的Other Linker Flags设置成空即可。

    本地化字符串文件不能使用。

    【1.】清理建文件夹,删除里面的一切DerivedData( 位于“/Users/个人PC用户名/Library/Developer/Xcode/DerivedData”下的缓存文件占了很大的内存空间),删除里面的程序,重新启动Xcode,重建工程。


    DerivedData文件夹


    【2.】去项目目录里,手动地创建两 infoplist.strings 的文件,第一次在 en.lproj文件夹和第二次在 fr.lproj文件夹。

    报错
     
    未引入库文件( .m文件)

     

    一般是没有引入相应的库文件(或 .m文件)。在引入三方库的时候都会提供 .a文件或framework,里面装的是第三方库所提供的对 .h文件的实现,只有加进去了才能找到 .h文件里面方法的实现。

    解决办法是,检查工程里是否已经把对应的文件加了进来。若是已经加了,则在build phases底下的compile sources中加入相应的 .m文件,或者在link binary with libraries中加入相应的库文件。


     
    Thread 1: signal SIGABRT

    往往是一个对象被释放了多次(多次释放)。大多是粗心所致。
    有一种情况称为过渡释放,比较隐蔽。

    NSUserDefaults *userDefault = [NSUserDefaults standardUserDefaults];
    self.myData = [userDefault objectForKey:@"myCollectData"];

    这种写法是错误的!我们自己并没有将内存分配给myData。所以 编译器对这块内存有控制权,而不是我们自己!
    所以,在某个时刻,我们不能保证myData是否有效。更不能保证程序到最后 进行了“[_myData release];”操作!


    根据 “谁分配,谁管理” 的原则!我改写成了如下形式:

    NSUserDefaults *userDefault = [NSUserDefaults standardUserDefaults];
    NSData * my_data = [userDefault objectForKey:@"myCollectData"];
    self.myData = [NSData alloc] initWithData:my_data];

    确保进行了初始化!这样才正确!

    manager start failed :

    在 info.plist 中必须添加 “Bundle display name”
    在使用 百度地图开发平台 时
    需要直接用“source code”方式,打开info.plist并添加:

    <key>CFBundleDisplayName</key>
            <string>BaiduDemo</string>

    便可以了 !!! (当然DisplayName(展示名字)是可变的 )

    iOS10 点击有关 权限访问 直接Crash了

    并在控制台输出了一些信息:

    This app has crashed because it attempted to access privacy-sensitive 
    data without a usage description.  The app's Info.plist must contain
    an NSContactsUsageDescription key with a string value explaining to
    the user how the app uses this data.

    意思:你需要在info.plist文件中 添加一个“NSContactsUsageDescription ”的Key,并为Value添加一个描述。

    1,在项目中找到info.plist文件,右击 “Open As”,以“Source Code” 的形式打开;
    2,分别复制 以下 Value 和Key,Key 是一定不能错,Value 可以随便填写;
    3,在info.plist 文件上 复制上,然后 保存。并且Clean 工程就好了。

    // 相机权限描述:
        <key>NSCameraUsageDescription</key>   
     <string>cameraDesciption</string>
    // 通信录:   
         <key>NSContactsUsageDescription</key>    
     <string>contactsDesciption</string>
    // 麦克风:
         <key>NSMicrophoneUsageDescription</key>    
     <string>microphoneDesciption</string>
    // 相机:
         <key>NSPhotoLibraryUsageDescription</key>    
     <string>photoLibraryDesciption</string>
    PNG图片格式错误

     

    打包的时候,出现这个警告!意思是:png file invalid;从新导入一下png图片就ok了。但是是 要知道是哪张图片出问题了。

    Message from debugger: Terminated due to signal 9

    原因:在调试的时候主动了结束了程度,如上滑、点击按钮等结束了程序。

    Error Domain=NSCocoaErrorDomain Code=3840 "JSON text did not start with array or object and option to allow fragments not set." UserInfo={NSDebugDescription=JSON text did not start with array or object and option to allow fragments not set.}

    在默认情况下,AFNetworking的网络请求都是以json的数据格式返回数据。因此,在客户端也会以json为默认格式。如果返回的数据为非json标准格式,则会报此错。
    我们只需要在发送请求前加入下面代码:

    manager.responseSerializer = [AFHTTPResponseSerializer serializer]。
    [__NSCFNumber length]: unrecognized selector sent to instance 0x8b3c310’

    问题原因:NSNumber类型与NSString类型冲突。
    解决方法:将所需要相应属性的NSString类型改为NSNumber类型(将属性类型设置为⭐️NSNumber), 调用时在将NSNumber类型 转成 NSString类型即可。

    linker command failed with exit code 1 (use -vto see invocation)

    原因:导入了.m的头文件,导致同时有两个一样的.m文件在编译

    Xcode真机测试报错:Could not launch...
    解决方案一:1.删除/Users/(用户名)/Library/Developer/Xcode/DerivedData/(对应APP程序)文件夹;
              2.拔掉手机,删除对应的APP程序,完全退出Xcode工具;
              3.重新连接手机进行真机测试。
    解决方案二:进行过真机抓包测试,关闭HTTP代理。
    解决方案三:1.选择手机中“设置” -> “通用” -> “设备管理” -> 选择自己对应的开发商应用 -> “删除应用”;
              2.重新运行Xcode中的程序,这个时候应该还会报错;
              3.再次进入自己对应的开发商应用 -> “验证应用”;
              4.再次运行Xcode中的程序就OK了。
    Warning! ivar size mismatch in StepUICollectionView_ of 80 bytes - can't change the superclass.
    解决:1.搜索StepUICollectionView,找到.m文件
         2.搜索char filler,在[]中的数据上加上警告提示的数据
    Xib连线问题

     
    问题原因:Xib中连线出问题
    没实现某方法

     
    问题原因:某个对象没有实现某个方法
     
    警告
     
    Data argument not used by format string

     

    “stringWithFormat:”里面没有idx对应的格式引起的。




     
  • 相关阅读:
    js小程序
    事务的概念
    为期一个月培训的总结
    软件测试培训总结篇2
    软件测试培训总结篇1
    软件测试培训第30天
    软件测试培训第29天
    软件测试培训第28天
    软件测试培训第26天
    软件测试培训第27天
  • 原文地址:https://www.cnblogs.com/linganxiong/p/7200752.html
Copyright © 2020-2023  润新知