- Java 双重比较
- java - 比较器与 Apache BeanComparator
- Objective-C 完成 block 导致额外的方法调用?
- database - RESTful URI 是否应该公开数据库主键?
注意:请参阅问题底部的更新,我已经设法在调试方面取得了更多进展。
我认为这是我的项目设置的问题,但我不确定要查看什么,因为没有编译错误。
我在项目中包含了 MagicalRecord 2.1(当前稳定版),CocoaPods 对其进行管理。我没有更改 CocoaPods 的任何build设置,它完美地管理了我的其他依赖项,到目前为止我还没有遇到任何问题。
我已经添加了 #import <MagicalRecord/CoreData+MagicalRecord.h>
到我的App-Prefix.pch
文件,Xcode 为我提供了正确设置时我期望的所有符号建议。我没有收到任何编译器错误,所以我只能假设 CocoaPods 已成功将 MR 构建到库中,并且我已成功将其导入到我的代码中。
当我在我的应用程序委托(delegate)中初始化 MagicalRecord 时出现问题:
- (void)applicationDidFinishLaunching:(NSNotification *)notification {
[MagicalRecord setupCoreDataStack];
//... other code
}
初始化几乎是第一个要运行的代码,并且没有其他运行的代码会与此冲突。
该行挂起,执行该行后什么也没有。我已经设法找到挂起发生的地方。将消息传递给 MagicalRecord
导致类(class)有+initialize
调用它,但那是行不通的。更具体地说,self
上的任何方法在初始化方法中调用的是导致 unrecognized selector
抛出异常。
据我所知,这有两件奇怪的事情:
我不太了解Objective-C是如何使用initialize方法的,它在抛出异常时是否会挂起?
这是异常发生时的堆栈跟踪:
frame #0: 0x00007fff93a2e3c5 libobjc.A.dylib`objc_exception_throw
frame #1: 0x00007fff996dc31a CoreFoundation`+[NSObject(NSObject) doesNotRecognizeSelector:] + 186
frame #2: 0x00007fff996341ee CoreFoundation`___forwarding___ + 414
frame #3: 0x00007fff99633fd8 CoreFoundation`_CF_forwarding_prep_0 + 232
frame #4: 0x000000010004e32c River`+[MagicalRecord initialize] + 92 at MagicalRecord.m:89
frame #5: 0x00007fff93a25236 libobjc.A.dylib`_class_initialize + 310
frame #6: 0x00007fff93a250f3 libobjc.A.dylib`prepareForMethodLookup + 164
frame #7: 0x00007fff93a24eef libobjc.A.dylib`lookUpMethod + 71
frame #8: 0x00007fff93a232fc libobjc.A.dylib`objc_msgSend + 188
frame #9: 0x0000000100001d36 MyApp`-[AppDelegate applicationDidFinishLaunching:] + 86 at AppDelegate.m:46
非常感谢任何对此的帮助,包括我可以尝试进一步调试它的技巧。
更新:
删除我的 Derived Data 目录后,程序无法链接到 Pod。我相信 Xcode 在我添加 MagicalRecord 并链接到它的旧版本后无法构建 Pod(这可能是错误的,我不确定)。
这似乎是 Xcode 和/或 CocoaPods 的问题。我正在尝试找出如何让它正确构建 Pod,但我不是 CocoaPods 或 Xcode build设置方面的专家,所以我不确定我能走多远。
更新 2:
Xcode 和项目设置存在问题,它正在与较旧的 Pod 库链接,并且仅在删除派生数据后才导致问题。现在我回到第 1 个方 block ,解决无法识别的选择器问题。
最佳答案
解决方案是在使用 Pod 库的产品的设置中的 Other Linker Flags 设置中使用 -all_load
链接器标志。
当您链接到 pod 库时,除非您这样做,否则 clang 会删除未使用的符号,并且由于您的应用程序不会在任何地方调用 +swizzleShorthandMethods,它会被删除。
关于Objective-C 无法识别的选择器 + 使用 MagicalRecord CocoaPod 初始化,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14633274/
我遵循了一本名为“Sitepoint Full Stack Javascript with MEAN”的书中的教程,我刚刚完成了第 6 章,应该已经创建了一个带有“数据库”的“服务器”。数据库只不过是
在 Jquery 中,我创建两个数组,一个嵌入另一个数组,就像这样...... arrayOne = [{name:'a',value:1}, {name:'b',value:2}] var arra
这个问题在这里已经有了答案: What is the explanation for these bizarre JavaScript behaviours mentioned in the 'Wa
我被放在别人的代码上,有一个类用作其他组件的基础。当我尝试 ng serve --aot(或 build --prod)时,我得到以下信息。 @Component({ ...,
我正在测试一些代码,并使用数据创建了一个 json 文件。 问题是我在警报中收到“[object Object],[object Object]”。没有数据。 我做错了什么? 这是代码:
我想打印 [object Object],[object Object] 以明智地 "[[{ 'x': '1', 'y': '0' }, { 'x': '2', 'y': '1' }]]"; 在 ja
我有一个功能 View ,我正在尝试以特殊格式的方式输出。但我无法让列表功能正常工作。 我得到的唯一返回是[object Object][object Object] [object Object]
在使用优秀的 Sim.js 和 Three.js 库处理 WebGL 项目时,我偶然发现了下一个问题: 一路走来,它使用了 THREE.Ray 的下一个构造函数: var ray = new THRE
我正在使用 Material UI 进行多重选择。这是我的代码。 {listStates.map(col => (
我的代码使用ajax: $("#keyword").keyup(function() { var keyword = $("#keyword").val(); if (keyword.
我遇到了下一个错误,无法理解如何解决它。 Can't resolve all parameters for AuthenticationService: ([object Object], ?, [o
我正在尝试创建一个显示动态复选框的表单,至少应选中其中一个才能继续。我还需要获取一组选中的复选框。 这是组件的代码: import { Component, OnInit } from '@angul
我正在开发 NodeJs 应用程序,它是博客应用程序。我使用了快速验证器,我尝试在 UI 端使用快速闪存消息将帖子保存在数据库中之前使用闪存消息验证数据,我成功地将数据保存在数据库中,但在提交表单后消
我知道有些人问了同样的问题并得到了解答。我已经查看了所有这些,但仍然无法解决我的问题。我有一个 jquery snipet,它将值发送到处理程序,处理程序处理来自 JS 的值并将数据作为 JSON 数
我继承了一个非常草率的项目,我的任务是解释为什么它不好。我注意到他们在整个代码中都进行了这样的比较 (IQueryable).FirstOrDefault(x => x.Facility == fac
我只是在删除数组中的对象时偶然发现了这一点。 代码如下: friends = []; friends.push( { a: 'Nexus', b: 'Muffi
这两个代码片段有什么区别: object = nil; [object release] 对比 [object release]; object = nil; 哪个是最佳实践? 最佳答案 object
我应该为其他人将从中继承的第一个父对象传递哪个参数,哪个参数更有效 Object.create(Object.prototype) Object.create(Object) Object.creat
我在不同的对象上安排不同的选择器 [self performSelector:@selector(doSmth) withObject:objectA afterDelay:1]; [self per
NSLog(@"%p", &object); 和 NSLog(@"%p", object); 有什么区别? 两者似乎都打印出一个内存地址,但我不确定哪个是对象的实际内存地址。 最佳答案 这就是我喜欢的
我是一名优秀的程序员,十分优秀!