当前位置:首页 » 编程软件 » xcode编译警告

xcode编译警告

发布时间: 2022-07-06 03:23:46

A. Xcode 在用gcc编译的时候出现警告

代码的运行编译是从上往下的,出现这个警告的原因是你写的某个函数里面调用了另一个函数,而这个另一个函数是第一次出现,系统辨认不出,当然你是写在了下面。
所以解决这个问题有两个方法:1在代码最上端声明所有函数。 2把该函数内调用的函数写到该函数的上面。

B. 怎么去掉Xcode工程中的某种类型的警告

一、最直接、最一劳永逸、最安全的方式,直接找到警告的那段代码,改为不警告。这个方式最安全。
可是它有一个问题,就是,当我们很多文件都有这种类型的警告的时候,我们就需要改动很多很多的源码了, 对于不是我们写的源码,有可能随时会更新的,我们这种方式,显然就不太可取了。
二、 使用编译器提供的宏来操作,这个方式在我们的工程中会大量的看到:
1#pragma clang diagnostic push
2#pragma clang diagnostic ignored"-Wdeprecated-declarations"
3 //写在这个中间的代码,都不会被编译器提示-Wdeprecated-declarations类型的警告
4dispatch_queue_tcurrentQueue =dispatch_get_current_queue();
5#pragma clang diagnostic pop

C. xcode总是出现黄色警告问题

有两类东西,得分情况看待。
一类真的是警告,只是提醒你一下有可能是错误。比如某个变量定义了却没有使用,这是常见的情况。还有什么xib里面字体不对啥的,这种我经常无视...
另一类真的会要命的,一跑就死,比如调用了没有定义过的方法。
总之这个就是黄灯,你得自己人工检查一下是不是真的会有问题。如果没有把握,就放过去吧,反正等到程序爆了再调试也不迟。但是如果能够一眼看出确实哪里出了毛病,岂不是节省了很多调试的时间?
要不这样,编译的时候无视,然后跑的时候发现爆了,就回过头来检查一下有没有黄灯。

D. iOS 编译报错怎么办

1.编译iPad真机时,选择了 Architetures:Standard(armv6) BaseSDK:iPhoneDevice3.2 TargetDeviceFamily:iPad.

若编译出现如下错误:

Command /Developer/Platforms/iPhoneOS.platform/Developer/usr/bin/gcc-4.2 failed with exit code 1

则修改 GCC4.2CodeGeneral区域中的ComplieForThumb为非选中.

已经有了开发者证书及私钥后,可直接在越狱的手机上调试.

2. 编译链接时, "_OBJC_CLASS_$_xxx", referenced from:可能需要重新建立某个类的文件.

或者:选择项目名,在detail列表中的target列(显示为一个又圆圈),把这个文件的复选选中,或者再次选中.以把它加入到这个target里面来.

3.在sdk4.0及以上使用RegexKitLite报'captureCount' was not declared in this scope错误,是在非.m文件中使用了它的原因.

4.there is no sdk with the name or path.

从网上down的开源代码,结果运行的时候常出现这样的错,并且在deployment中没有iosdeploymenttarget选项.

尝试 Project/Edit Active Target/ 及 Set Active SDK菜单项,来回切换一下Active Configuration。

5. EXEC_BAD_ACCESS,EXC_BAD_INSTRUCTION错误,意味着这个app有内存管理的问题,一般是因为访问野指针对象造成的。

一个和内存相关的崩溃一般很难定位到源代码,因为这个恶魔可能很早就在程序中做了坏事了。假如一段有问题的代码混乱了内存结构,这样产生的蝴蝶效应可能会在之后很久才表现出来,并且总在不同的地方。所以,若有指针类型出现了不可能的变化,很可能就是因为内存结构被野指针调用混乱了。

修复一些警告后,可能就能预防一些内存错误。警告在左边靠近行号的黄色三角指出一个编译警告,你点击那个黄色的三角形,xcode可能会弹出一个“Fix-it”的建议。

EXC_BAD_ACCESS崩溃不像SIGABRT,将不会得到很明朗的错误消息。然而可以使用一个让人看到曙光的调试工具:Zombies!死亡对象工具。打开这个项目的scheme editor,选择Run 选项,然后选择Diagnosics标签。勾上Enable Zombie Objects选项。当这个zombie工具被启用之后,即使这个对象被释放了,这个对象的内存也不会被清理。所以,那块内存将会被标记为“长生不死的”。假如你试着之后又去使用这块内存,这个app能够意识到你的错误操作,并且app将会抛出“messagesent to daellocated instance”错误并且终止运行。

在工程中加入NSZombieEnabled 环境变量,并设为启用,则在 EXC_BAD_ACCESS 发生时,XCode 的 Console 会打印出问题描述中,设置方法:双击Executables 下的 可执行模组,在弹出窗口中,Variables to be set in the environment,添加 NSZombieEnabled,并设定为 YES,点击选中复选框启用此变量。

可以再加入 MallocStackLogging 来启用malloc记录,以获得更多的提示来帮助定位问题。

在gdb窗口输入 (格式: shell malloc_history <id> <address>) shellmalloc_history1436 0x5f7fcf0, 也可以在终端中去运行 就要去掉以上的shell 指令 如 malloc_history <id> <address>

应该仅当需要调试内存时,才设置上述环境变量。

注意一点:不应该一直启用zombie objects。因为这个工具将永远不会释放内存,只是简单标记一下这个内存是不死的,你最终将会在某个时候耗尽所有的内存,因为所有分配过的内存都不会得到重用。因此应该在排查内存相关的错误的时候才开启zombie objects,其他时候应该关闭它。

在xcode4中,To edit environment variables, go to Menu Proct / Edit Scheme…, select the desired configuration (you probably want 'Run') from the left sidebar first and then click on the Arguments tab. Environment variables are configurable there.

6.运行一个IPhone程序时,弹出窗口说“程序运行失败,预置描述文件已过期” 。 解决办法是,在Xcode中, window-> Orgnazier -> 你的iphone ->删除带有红*的该程序之前的Profile 。 然后从Xcode运行该程序.

7.真机编译时报 Code Sign error: The identity doesn't match any valid certificate/private key pair in the default keychain

修改工程和Targets的get infouild 中的code signing identity为空

8.调试打印

CFShow(coreFoundationThingy) will print out a description of coreFoundationThingy to the console. Output looks something like: {value = w:1186.000000 h:687.000000 type = kAXValueCGSizeType}

If NSLog() is printing something out as an NSCFType, try CFShow().

9. 编译时报 Command /Developer/Platforms/iPhoneSimulator.platform/Developer/usr/bin/clang failed with exit code 1,修改C/C++ Compiler Version为gcc4.2

10.this class is not key value coding-compliant for the key viewController

可能在创建了一个基于view的工程,而后把生成的viewcontroller删除了,但是在.xib中还有对它的引用,在IB中直接用delete键删除掉它就行了。

11.这台电脑上已经存在一个名为“embedded.mobileprovision”的预置文件,您是否要替换么?

http://blog.sina.com.cn/s/blog_6907b67f0100o2vw.html

12.真机调试时报failed to upload *.app

http://hi..com/%CB%E6%B7%E7_1989/blog/item/9649f49f805f05aec8eaf466.html

http://www.shouyanwang.org/thread-462-1-1.html

13.记的release时,先置delegate为nil。

一个节点不应该保留任何对不属于它的节点的引用。

14.模拟器

将xcode升级到4.3.1以后发现,ipad的模拟器,没有Home键了。Command+Shift+H就可以实现类似点击Home键的效果了。

    E. xcode 6.2 helloworld编译报错,求助

    一般可以先尝试 clean,复杂点的可能要删除 cache。另外有可能是32位和64位差异造成的警告,而你又开启了把警告转为错误的编译选项。不过最好还是把错误信息放上来看看。 希望我的回答对你有帮助。

    F. 您好!我想请教一下,Xcode编译时报错提示找不到某个文件

    如果只是黄色叹号的waring,我猜是你的项目启用了 Svn或者git,文件被纳入版本管理,而你手工删掉文件而不是在Xcode里删掉,则没有从版本管理器中把文件删掉,于是Xcode警告你版本管理工具没找到这些文件了。如果是这样,手工在命令行里敲下类似 svn delete <删掉的文件名> 就行了。如果你有用 svn/git 客户端则更方便。

    G. Xcode无法编译,一运行就报错,请问如何解决

    1、XCode默认使用与CPU核数相同的线程来进行编译,但由于编译过程中的IO操作往往比CPU运算要多,因此适当的提升线程数可以在一定程度上加快编译速度。
    2. 将Debug Information Format改为DWARF 在工程对应Target的Build Settings中,找到Debug Information Format这一项,将Debug时的DWARF with dSYM file改为DWARF。 这一项设置的是是否将调试信息加入到可执行文件中,改为DWARF后,如果程序崩溃,将无法输出崩溃位置对应的函数堆栈,但由于Debug模式下可以在XCode中查看调试信息,所以改为DWARF影响并不大。这一项更改完之后,可以大幅提升编译速度。
    3. 将Build Active Architecture Only改为Yes 在工程对应Target的Build Settings中,找到Build Active Architecture Only这一项,将Debug时的No改为Yes。 这一项设置的是是否仅编译当前架构的版本,如果为No,会编译所有架构的版本。需要注意的是,此选项在Release模式下必须为Yes,否则发布的ipa在部分设备上将不能运行。这一项更改完之后,可以显着提高编译速度。

    H. -Wno-deprecated-declarations编译选项什么意思

    这个编译选项是用来关闭Xcode中关于废弃API的警告
    比如 你代码中使用了某个已经被废弃的API 这是Xcode会出现一个警告
    这时你就可以通过这个编译选项 关闭掉这个警告。

    I. Xcode编译警告

    你可以在otherlink 中加入 -Wl,-no_compact_unwind 去掉该警告,
    根据苹果的解释,这个是由于某些地方 c/c++/oc/oc++混用会造成编译警告。一般没有什么伤害。

    J. xcode 编译过程中怎么忽略警告

    你可以在otherlink 中加入 -Wl,-no_compact_unwind 去掉该警告, 根据苹果的解释,这个是由于某些地方 c/c++/oc/oc++混用会造成编译警告。一般没有什么伤害。

    热点内容
    土工数据库 发布:2025-02-11 09:48:55 浏览:962
    libxml2编译 发布:2025-02-11 09:48:45 浏览:744
    java类的复制 发布:2025-02-11 09:48:45 浏览:600
    127小时ftp 发布:2025-02-11 09:47:10 浏览:851
    安卓怎么看苹果手机的行驶轨迹 发布:2025-02-11 09:26:19 浏览:884
    h板电影种子ftp 发布:2025-02-11 09:06:10 浏览:738
    c语言数据类型定义 发布:2025-02-11 09:00:38 浏览:237
    一个小时如何选择服务器 发布:2025-02-11 08:58:14 浏览:442
    网易我的世界服务器推荐国服 发布:2025-02-11 08:56:34 浏览:241
    电视父母锁屏密码应该会是什么 发布:2025-02-11 08:36:42 浏览:892