我已经构建了一个静态库,它大量使用了Core Data框架.我可以在我的外部项目中成功使用该库,但仅限于我在主项目中包含.xcdatamodel文件.这不太理想,因为库的要点是尽可能隐藏实现细节.
在一个单独的问题中,我被告知我无法将资源与库捆绑在一起(这对我来说完全合情合理).
那么有没有办法以编程方式允许模型被"发现",而不必将模型包含在主项目中?
我遇到了一个不寻常的情况,当我的应用程序被删除然后重新安装时,用户继续收到通知.方案如下:
我对APN架构的理解是,一旦您的应用程序从您的设备中删除,它就会被操作系统本身从APN取消注册.在您调用"registerForRemoteNotificationTypes"之前,重新安装应用程序不会重新启用通知 - 因此,如果使用旧令牌向设备发送了注释,则由于尚未调用上述方法,APN将无法提供该注释.
这不准确吗?
我在Xcode中创建了一个静态库,我可以在其他项目中成功使用它.但是,对于像plists这样的资源,我发现必须在我的库中引用在项目所在的主项目中引用的任何plist.
在我的静态库项目中,我的plist包含在目标的"Copy Bundle Resources"阶段.在我的代码中,这是我正在做的事情:
NSBundle *mainBundle = [NSBundle mainBundle];
NSString *filePath = [mainBundle pathForResource:@"MyClassParams" ofType:@"plist"];
NSMutableDictionary* params = [[NSMutableDictionary alloc] initWithContentsOfFile:filePath];
Run Code Online (Sandbox Code Playgroud)
如果我使用mainBundle并且MyClassParams.plist包含在主项目中,那么一切都很好.如果MyClassParams.plist包含在库项目中,则它不起作用.
假设[NSBundle mainBundle]引用了错误的静态方法,我将其替换为:
NSBundle *mainBundle = [NSBundle bundleForClass:[MyClass class]];
Run Code Online (Sandbox Code Playgroud)
这也不起作用.
那么,是否可以将plist或任何其他资源包含在静态库中 - 或者我是否必须在使用lib的项目中包含我需要的内容?
在iOS上调试时,如果我暂停执行,我经常会看到多个对"__workq_kernreturn"的引用.
如果我的应用程序碰巧崩溃,我经常看到多个线程被识别如下:
Thread 19:
0 libsystem_kernel.dylib 0x332d0cd4 __workq_kernreturn + 8
Thread 20:
0 libsystem_kernel.dylib 0x332d0cd4 __workq_kernreturn + 8
Thread 21:
0 libsystem_kernel.dylib 0x332d0cd4 __workq_kernreturn + 8
Run Code Online (Sandbox Code Playgroud)
"__workq_kernreturn"是否表示正在等待退出的线程,或者是一个死锁的线程?这有什么值得担心的吗?
这些是来自我的 redis 实例的内存使用情况统计信息。我不确定 used_memory_peak_perc 和 used_memory_dataset_perc 是什么意思——什么时候我应该开始担心?特别是因为后者越来越接近 100%。
# Memory
used_memory:454041104
used_memory_human:433.01M
used_memory_rss:558338048
used_memory_rss_human:532.47M
used_memory_peak:867680576
used_memory_peak_human:827.48M
used_memory_peak_perc:52.33%
used_memory_overhead:93054648
used_memory_startup:3662104
used_memory_dataset:360986456
used_memory_dataset_perc:80.15%
used_memory_lua:37888
used_memory_lua_human:37.00K
maxmemory:9901336167
maxmemory_human:9.22G
maxmemory_policy:volatile-lru
mem_fragmentation_ratio:1.23
mem_allocator:jemalloc-4.0.3
active_defrag_running:0
lazyfree_pending_objects:0
Run Code Online (Sandbox Code Playgroud)