iOS错误信息记录,不定时补充

本文汇总了iOS开发过程中常见的编译及运行时错误,包括重复文件导入、第三方库配置问题、资源文件处理不当等,并提供了相应的解决方法。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

编码的时候总会遇到各种各样的错误,在这里记录下,方便以后查找

1.//

ld: 6 duplicate symbols for architecture ×86_64

    clang: error: linker command failed with exit code 1 (use -v to see invocation)


原因:

工程中导入了重复文件

解决方案:

删除多余的即可


2.//

ld: library not found for -lMJExtension

  clang: error: linker command failed with exit code 1 (use -v to see invocation)

       并且使用cocoapods安装MJExtension之后出现下图警告

  原因:

使用 cocoapods 安装第三方库,我们不需要自己在 项目 --> target --> Build Settings -- > Search Paths 中配置相关文件的路径,pods 会自动为我们配置好

  解决办法:

  1. 按照上面报错的提示,我们“HEADER_SEARCH_PATHS” 这个复制下来。
  2. 然后找到   项目 --> target --> Build Settings  然后在右边的输入框中输入“HEADER_SEARCH_PATHS” ,查看搜索到的项对应的 Debug 和 Release 值,如果其中含有警告的第三方库内文件的路径,就把该路径删除,然后添加路径“$(inherited)”;如果其中没有路径,也把“$(inherited)”添加进去。
  3. 之后,再次运行就没问题了


#mark -- 17.03.18 更新

3.//

***/Image/jia_mousedown@2x.png pngcrush caught libpng error:  Not a PNG file..

应用在在模拟器上调试一点问题没有,但一放到真机上调试就出现copypngfile 的错误,编译器报错信息如下:

While reading /Users/avepoint/Desktop/**/**/Image/jia_mousedown@2x.png pngcrush caught libpng error:

   Not a PNG file..

Command /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


CopyPNGFile /Users/avepoint/Library/Developer/Xcode/DerivedData/**-eapmjmcpwpwpvcazuqcyashswpze/Build/Products/Debug-iphoneos/**.app/hsj.png **/Image/hsj.png

    cd /Users/avepoint/Desktop/Melon/XMPPWorking_realPhone/**

    export PATH="/Applications/Xcode.app/Contents/Developer/Platforms/iPhoneOS.platform/Developer/usr/bin:/Applications/Xcode.app/Contents/Developer/usr/bin:/usr/bin:/bin:/usr/sbin:/sbin"

    /Applications/Xcode.app/Contents/Developer/Platforms/iPhoneOS.platform/Developer/usr/bin/copypng -compress /Users/avepoint/Desktop/**/**/Image/hsj.png /Users/avepoint/Library/Developer/Xcode/DerivedData/**-eapmjmcpwpwpvcazuqcyashswpze/Build/Products/Debug-iphoneos/**.app/hsj.png

解决方案:

1.在build settings里把工程里的Compress PNG files设置为NO,问题解决,但这样设置以后,弄出来的ipa会很大。

2.mac中用preview(预览)打开出问题的png文件,然后重新导出png文件或者用photoshop把png图片保存为NOT INTERLACED(不交错)的,覆盖源文件。这样真机调试时就没有错误了。


4.//

Undefined symbols for architecture x86_64:
  "_sqlite3_column_bytes", referenced from:
      -[FunctionDBManager getOneCacheWithName:] in FunctionDBManager.o

原因:

缺少sqlite3.td

解决方案:

在 TARGETS  -- Build Phases  -- Link Binary With Libraries 中添加 sqlite3.td


5.//

      "_OBJC_CLASS_$_WKWebView", referenced from:

             objc-class-ref in FirstViewController.o

原因:
缺少WebKit.framework
解决方案:
TARGETS  -- Build Phases  -- Link Binary With Libraries 中添加WebKit.framework


#mark -- 17.04.27 更新


6.//
   
openssl/asn1.h file not found

原因:支付宝的aliPay.SDK没有添加到工程或者该SDK文件路径错误

解决办法:在 Building Settings -> Search Paths -> Header Search Paths 里添加 aliPay.SDK(因为openssl/asn1.h就在这个文件夹里) 的路径进去就可以了



7.//   
        Failed to initiate service connection to simulator   
         unable to contact local DTServiceHub to bless simulator connection

        

解决办法:重启电脑


8.//
    'CALayer position contains NaN: [187.5 nan]' *** First throw call stack:


原因:有地方设置的frame存在除以0的情况,
解决办法:对可能出现除0的地方做下预防


#mark -- 17.06.10 添加

9.//
     “xxxxxxx”couldn't be opened because there is no such file.
     无法给控件如Button 关联方法



这个问题的出现应该属于人品问题 (^U^)ノ~YO , 实际上应该是Xcode的bug,那应该怎么处理呢,有三种方法可以尝试一下:

1、先.删除 .h 和 .m 的关联,不是完全删除,然后清理一下工程 Product -> Clean,完全退出Xcode,重新打开Xcode,之后再重新添加文件,问题应该可以解决了,如图:



2、如果方法1不行,那么试试关机重合,基本也能好了;

3、什么,上面的方法都不行;退后,我要放大招了,请看图:




 !!!  请手动写出这个方法,然后再拖线关联。
出现这种问题基本只会有一个类受到影响,所以采用第三种方法后,其他的XIB文件还是想怎么拖就怎么拖。




<think>好的,我现在需要帮助用户排查支付宝支付接口结果回调未触发的原因。首先,我得回忆一下常见的回调问题可能出在哪里。根据用户提供的引用内容,有几个可能的方向:回调URL配置、网络问题、重复处理或者客户端处理逻辑的问题。 首先,用户提到引用[1]中的解决方案,需要检查回调URL是否正确配置并且服务器可达。这应该是第一步,确认支付宝的回调地址是否正确,没有拼写错误,尤其是https和http的区别,还有路径是否正确。然后,检查服务器的防火墙或安全组设置,是否允许来自支付宝服务器的请求。有候,服务器安全软件如iptables或者云服务的安全组规则可能会拦截这些请求。 接下来,引用[2]提到了前端轮询的方案,这说明在某些情况下,支付结果可能不会及回调,这候前端会主动查询。但用户的问题是回调完全不触发,所以可能需要确认支付宝是否确实发送了回调请求。查看支付平台的日志是否有发送记录,如果支付宝没有发送,可能是支付订单状态的问题,比如未完成支付或者支付失败,这候自然不会触发回调。此外,用户是否在支付完成后关闭了页面过快,导致回调无法接收?不过支付宝的回调通常是服务器到服务器的,和客户端页面停留间关系不大,但引用[2]提到的情况可能是指客户端显示成功前的处理,这里可能需要区分客户端和服务器的交互。 然后引用[3]提到了iOS客户端回调的问题,特别是区分了安装支付宝客户端和H5的情况。如果用户是在移动端集成,可能需要检查客户端的回调处理代码是否正确,比如CompletionBlock是否被正确注册,或者是否有条件判断导致某些情况下的回调未被触发。例如,是否只在安装了支付宝客户端的情况下处理回调,而H5情况下的回调处理被遗漏了? 另外,还要考虑支付宝的异步通知机制。支付宝在支付完成后会向商户服务器发送异步通知,这个过程可能会有延迟,或者因为网络问题导致通知未能到达。此,商户服务器应该有一个超机制,主动去查询支付结果,如引用[2]中的方案,定轮询支付宝的接口确认支付状态,作为回调失败的补救措施。 可能还需要检查服务器的接收处理逻辑,比如是否有正确的响应。支付宝的文档中通常要求服务器在接收到通知后返回一个成功的响应(如HTTP 200状态码),否则支付宝会认为通知失败,并尝试重新发送。如果服务器处理逻辑中没有正确返回响应,可能导致支付宝多次重试,但用户这边可能因为处理逻辑的问题(如重复处理)而忽略后续的通知,或者服务器日志中没有记录。 此外,还需要检查订单状态的同步问题。例如,是否在接收到回调之前,订单状态已经被手动修改,导致回调处理订单状态不符合预期,从而被忽略。或者回调处理代码中存在异常,导致处理失败,但未记录日志,使得问题难以追踪。 总结下来,可能的排查步骤包括: 1. 检查回调URL配置是否正确,服务器是否可达。 2. 查看支付宝商户平台的交易状态,确认支付是否成功完成。 3. 检查服务器网络配置,确保支付宝的IP白名单已添加,防火墙未拦截。 4. 检查服务器日志,确认是否收到回调请求,以及处理过程中是否有异常。 5. 验证服务器处理回调后的响应是否符合支付宝的要求。 6. 检查客户端代码,尤其是回调处理逻辑是否正确区分不同情况(如是否安装支付宝客户端)。 7. 考虑实施主动查询机制,作为回调失败的补充。 最后,用户可能需要结合支付宝的文档,确认各个配置步骤是否正确,比如密钥配置、异步通知地址的设置等。同,测试环境下的沙箱测试也是排查问题的重要手段,可以通过模拟支付来观察回调是否正常触发。</think>### 支付宝支付接口结果回调未触发的排查步骤 #### 1. 检查回调URL配置与网络可达性 - **回调地址配置**:确认支付宝商户平台中配置的异步通知地址(`notify_url`)是否正确,需注意区分测试环境与生产环境,避免路径拼写错误或协议错误(如`http`误写为`https`)[^1]。 - **网络连通性**:检查服务器防火墙、安全组规则或云服务商的安全策略,确保支付宝服务器的IP段(如`203.119.xx.xx`)未被拦截。可通过`telnet`或`curl`模拟请求测试端口连通性。 #### 2. 验证支付订单状态与支付宝日志 - **订单状态查询**:通过支付宝的`alipay.trade.query`接口主动查询订单状态,确认支付是否实际成功。若订单未完成,则不会触发回调。 - **支付宝日志排查**:登录支付宝开放平台,查看交易日志中是否有发送回调请求的记录。若无记录,需检查支付流程是否完整(如用户是否中途关闭页面)[^2]。 #### 3. 服务器端接收与处理逻辑 - **回调接收日志**:检查服务器应用日志,确认是否收到支付宝的POST请求。若无日志记录,可能是网络拦截或请求未到达。 - **响应格式要求**:支付宝要求服务器在接收回调后返回`success`(HTTP 200状态码),否则会持续重试(最多24小)。确保业务代码正确处理请求并返回正确响应。 - **防重复处理机制**:检查代码是否因重复回调触发了幂等性校验(如订单状态已更新为“已支付”后忽略后续请求)[^1]。 #### 4. 客户端集成问题(移动端场景) - **回调函数注册**:在iOS/Android客户端中,需确认`CompletionBlock`是否正确绑定。例如,未安装支付宝客户端需依赖H5页面的回调,而安装后依赖本地客户端的回调[^3]。 - **Scheme配置检查**:iOS中需检查`Info.plist`的`URL Types`配置是否正确,确保支付宝客户端能跳转回应用并触发回调。 #### 5. 主动轮询机制补充 - **短轮询兜底方案**:在回调不可靠,可通过前端定调用`alipay.trade.query`接口(如每隔5秒查询一次,最多重试5次),避免依赖异步通知。 #### 6. 其他常见问题 - **参数签名错误**:检查生成支付参数`sign`的算法是否符合要求(如RSA2),避免因签名失败导致支付流程中断。 - **证书过期或密钥错误**:定期检查支付宝公钥、应用私钥是否过期或配置颠倒。 ```text
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值