iOS模拟器崩溃,而真实设备不崩溃

iOS模拟器崩溃,而真实设备不崩溃,ios,xcode,runtime-error,ios-simulator,cocoapods,Ios,Xcode,Runtime Error,Ios Simulator,Cocoapods,我在一个项目中工作,该项目包括由Cocoapods集成为pod的几个库-已经有一段时间了,但我认为这个错误是在我集成Cocoapods时首先出现的,并且从那以后一直没有消失(因此我开始使用一个真正的设备来测试我的构建) 正如我提到的,在任何真实设备上构建都没有问题,但在构建iOS模拟器时,我经常会遇到以下错误。Xcode成功完成构建并启动模拟器,然后在尝试加载构建时立即崩溃 dyld: Symbol not found: _ACAccountTypeIdentifierTwitter Ref

我在一个项目中工作,该项目包括由
Cocoapods
集成为pod的几个库-已经有一段时间了,但我认为这个错误是在我集成
Cocoapods
时首先出现的,并且从那以后一直没有消失(因此我开始使用一个真正的设备来测试我的构建)

正如我提到的,在任何真实设备上构建都没有问题,但在构建iOS模拟器时,我经常会遇到以下错误。Xcode成功完成构建并启动模拟器,然后在尝试加载构建时立即崩溃

dyld: Symbol not found: _ACAccountTypeIdentifierTwitter
  Referenced from: .../Library/Developer/CoreSimulator/Devices/28482AD6-B0F2-4FBF-B525-C1EA3F2E07FA/data/Containers/Bundle/Application/D9992D1D-FE14-4403-A9DC-E5C1BB787E9E/projectName.app/projectName
  Expected in: flat namespace
 in .../Library/Developer/CoreSimulator/Devices/28482AD6-B0F2-4FBF-B525-C1EA3F2E07FA/data/Containers/Bundle/Application/D9992D1D-FE14-4403-A9DC-E5C1BB787E9E/projectName.app/projectName
(lldb)
我对更改链接选项非常谨慎,因为当我第一次遇到这个问题时,它也影响了Xcode本身的构建,而Xcode本身由于一些难以理解的错误而一次又一次失败。此外,我没有使用任何特定于Twitter的代码,它只是一个集成库的一部分

非常感谢您的帮助,因为我非常希望能够再次在模拟器上进行构建

编辑1

编辑2

dyld`_dyld_start:
    0x7fff6431d000 <+0>:   popq   %rdi
    0x7fff6431d001 <+1>:   pushq  $0x0
    0x7fff6431d003 <+3>:   movq   %rsp, %rbp
    0x7fff6431d006 <+6>:   andq   $-0x10, %rsp
    0x7fff6431d00a <+10>:  subq   $0x10, %rsp
    0x7fff6431d00e <+14>:  movl   0x8(%rbp), %esi
    0x7fff6431d011 <+17>:  leaq   0x10(%rbp), %rdx
    0x7fff6431d015 <+21>:  movq   0x37aec(%rip), %r8        ;     _dyld_start_static
    0x7fff6431d01c <+28>:  leaq   -0x23(%rip), %rcx         ; <+0>
    0x7fff6431d023 <+35>:  subq   %r8, %rcx
    0x7fff6431d026 <+38>:  leaq   -0x102d(%rip), %r8
    0x7fff6431d02d <+45>:  leaq   -0x8(%rbp), %r9
    0x7fff6431d031 <+49>:  callq  0x7fff6431d076            ;     dyldbootstrap::start(macho_header const*, int, char const**, long, macho_header const*, unsigned long*)
->  0x7fff6431d036 <+54>:  movq   -0x8(%rbp), %rdi
    0x7fff6431d03a <+58>:  cmpq   $0x0, %rdi
    0x7fff6431d03e <+62>:  jne    0x7fff6431d050            ; <+80>
    0x7fff6431d040 <+64>:  movq   %rbp, %rsp
    0x7fff6431d043 <+67>:  addq   $0x8, %rsp
    0x7fff6431d047 <+71>:  movq   $0x0, %rbp
    0x7fff6431d04e <+78>:  jmpq   *%rax
    0x7fff6431d050 <+80>:  addq   $0x10, %rsp
    0x7fff6431d054 <+84>:  pushq  %rdi
    0x7fff6431d055 <+85>:  movq   0x8(%rbp), %rdi
    0x7fff6431d059 <+89>:  leaq   0x10(%rbp), %rsi
    0x7fff6431d05d <+93>:  leaq   0x8(%rsi,%rdi,8), %rdx
    0x7fff6431d062 <+98>:  movq   %rdx, %rcx
    0x7fff6431d065 <+101>: movq   (%rcx), %r8
    0x7fff6431d068 <+104>: addq   $0x8, %rcx
    0x7fff6431d06c <+108>: testq  %r8, %r8
    0x7fff6431d06f <+111>: jne    0x7fff6431d065            ; <+101>
    0x7fff6431d071 <+113>: jmpq   *%rax
    0x7fff6431d073 <+115>: nop
dyld`\u dyld\u开始:
0x7fff6431d000:popq%rdi
0x7fff6431d001:pushq$0x0
0x7fff6431d003:movq%rsp,%rbp
0x7fff6431d006:andq$-0x10,%rsp
0x7fff6431d00a:subq$0x10,%rsp
0x7fff6431d00e:movl 0x8(%rbp),%esi
0x7fff6431d011:leaq 0x10(%rbp),%rdx
0x7fff6431d015:movq 0x37aec(%rip),%r8_动态启动静态
0x7fff6431d01c:leaq-0x23(%rip),%rcx;
0x7fff6431d023:子q%r8,%rcx
0x7fff6431d026:leaq-0x102d(%rip),%r8
0x7fff6431d02d:leaq-0x8(%rbp),%r9
0x7fff6431d031:callq 0x7fff6431d076;dyldbootstrap::start(macho_头常量*,int,char常量**,long,macho_头常量*,无符号long*)
->0x7fff6431d036:movq-0x8(%rbp),%rdi
0x7fff6431d03a:cmpq$0x0,%rdi
0x7fff6431d03e:jne 0x7fff6431d050;
0x7fff6431d040:movq%rbp%rsp
0x7fff6431d043:addq$0x8,%rsp
0x7fff6431d047:movq$0x0,%rbp
0x7fff6431d04e:jmpq*%rax
0x7fff6431d050:addq$0x10,%rsp
0x7fff6431d054:pushq%rdi
0x7fff6431d055:movq 0x8(%rbp),%rdi
0x7fff6431d059:leaq 0x10(%rbp),%rsi
0x7fff6431d05d:leaq 0x8(%rsi,%rdi,8),%rdx
0x7fff6431d062:movq%rdx,%rcx
0x7fff6431d065:movq(%rcx),%r8
0x7fff6431d068:addq$0x8,%rcx
0x7fff6431d06c:testq%r8,%r8
0x7fff6431d06f:jne 0x7fff6431d065;
0x7fff6431d071:jmpq*%rax
0x7fff6431d073:nop

不幸的是,iOS模拟器不完全支持twitter帐户。你的手机有。您所遇到的崩溃是因为缺少
\u accounttypeidentifierwitter
。如果要确保模拟器上不会发生这种情况,无论您在哪里检查
ACAccountType
,请检查以确保
accounttypeidentifierwitter
可用。同样适用于facebook、SinaWeibo和腾讯微博。

Obj-C 您需要同时导入
Twitter
Accounts
框架

敏捷的 下面的整个项目在iOS模拟器上编译、构建、链接和运行。如果遵循这些说明,您可以立即验证开发环境的完整性

项目

Xcode>新建>项目…>单视图应用程序,
SO Twitter
,Swift,Universal,Next,Create


代码

import UIKit
import Twitter
import Accounts

class ViewController: UIViewController {
    override func viewDidLoad() {
        super.viewDidLoad()
        let accountStore = ACAccountStore()
        let accountType = accountStore.accountTypeWithAccountTypeIdentifier(
            ACAccountTypeIdentifierTwitter)

        accountStore.requestAccessToAccountsWithType(accountType, options: nil) {(
            granted:Bool, error:NSError!) -> Void in
                println("granted:\(granted) error:\(error)"
        )}
    }
}
上面的代码贴在上面是为了方便


在iOS模拟器上链接、构建和运行

(在模拟器8.3上的Xcode 6.3.2中进行了验证)

已授予:真错误:零


点击“确定”按钮后,您可能需要重新设置iOS模拟器的内容和设置…>重置。

不要使用-未定义的动态查找。这会导致您在运行时遇到故障,而不是在链接时出现更明显、更有用的错误。如果将其从LDFLAGS中删除,则可能会看到一条错误消息,说明无法解析_accountTypeIdentifierWitter符号及其使用位置

_accountTypeIdentifierWitter由Accounts.framework提供:

$ nm $(xcrun --sdk iphonesimulator --show-sdk-path)/System/Library/Frameworks/Accounts.framework/Accounts | grep _ACAccountTypeIdentifierTwitter
000000000003bdd0 S _ACAccountTypeIdentifierTwitter

将异常断点和调试放在设备中,该设备将显示它在哪一行崩溃。把密码放在这里。@Alexei S.嗨。请参阅<代码> AtdioLDFLAGS =框架基础-Obj. @ Mozilla感谢您的输入,不幸的是它没有帮助,问题保持不变。在edit 1中添加一些额外的信息。@cyberlobe即使我已经编程将近一年了,我对这种调试还不是很有经验。我应该(准确地)执行哪些步骤,因为我不认为您正在寻找像Edit2中那样的输出(使用“all”添加一个异常断点),对吗?Xcode的模拟器有缺陷,您经常会遇到问题,而这些问题实际上并不是由于代码中的“错误”造成的。在对项目进行任何重大更改之前,请确保关闭Xcode并在模拟器中重置内容和设置@Visput的步骤非常简单,您所说的“在何处检查accountType”是什么意思?我没有在我的代码中故意使用它。在什么样的文件中会发生这种情况?我如何修复它?我的感觉往往不同,正如我在回答中所概述的,这不是我的经验。我的回答不是正好相反吗?社区:哪个模拟器不支持Twitter和崩溃?这怎么可能是被接受的答案呢?按照芬内卢斯基的方法还有什么建议吗?正如在
ACAccountType.h
、Twitter(iOS,Imported=5.0)中看到的那样,我非常怀疑这是否是手头的问题。我唯一的价值是$(继承的)。这导致了这些标志,比如-undefined dynamic_lookup。否则怎么办?$(继承的)基本上可以帮助您附加到更高级别rat的值