Mac 软件开发报错 NSTaggedPointerString count [求助]

2023-07-16 04:23:58 +08:00
 emperinter

情况

想着给已有项目配置修复一下国际化问题,刚开始还能运行后续运行报错如下,各种方法都没有找到原因。代码基本没有任何改动,后续发现已上线的测试版本也无法运行。目前定位应该是在入口的@main开始发生问题,也怀疑是 Localizable.strings 的问题,但实际上没有任何修改记录。

报错如下

2023-07-16 04:13:48.942021+0800 PDFPhoto Protector[9808:134268] -[NSTaggedPointerString count]: unrecognized selector sent to instance 0xb4fad2e3e13e9cba
2023-07-16 04:13:48.942928+0800 PDFPhoto Protector[9808:134268] *** Terminating app due to uncaught exception 'NSInvalidArgumentException', reason: '-[NSTaggedPointerString count]: unrecognized selector sent to instance 0xb4fad2e3e13e9cba'
*** First throw call stack:
(
	0   CoreFoundation                      0x00000001a319b154 __exceptionPreprocess + 176
	1   libobjc.A.dylib                     0x00000001a2cba4d4 objc_exception_throw + 60
	2   CoreFoundation                      0x00000001a3242110 -[NSObject(NSObject) __retain_OA] + 0
	3   CoreFoundation                      0x00000001a31030a0 ___forwarding___ + 1600
	4   CoreFoundation                      0x00000001a31029a0 _CF_forwarding_prep_0 + 96
	5   CoreFoundation                      0x00000001a31df09c _CFLocaleCreateLocaleIdentifierForAvailableLocalizations + 76
	6   CoreFoundation                      0x00000001a30df058 _CFLocaleCopyCurrentGuts + 816
	7   CoreFoundation                      0x00000001a30decfc +[NSLocale currentLocale] + 16
	8   Foundation                          0x00000001a4044dcc -[NSUserDefaults(NSUserDefaults) init] + 1136
	9   Foundation                          0x00000001a4044910 +[NSUserDefaults(NSUserDefaults) standardUserDefaults] + 64
	10  AppKit                              0x00000001a630c804 +[NSApplication initialize] + 88
	11  libobjc.A.dylib                     0x00000001a2caaff0 CALLING_SOME_+initialize_METHOD + 24
	12  libobjc.A.dylib                     0x00000001a2caac9c initializeNonMetaClass + 904
	13  libobjc.A.dylib                     0x00000001a2cc50e8 _ZL24initializeAndMaybeRelockP10objc_classP11objc_objectR12locker_mixinIN9lockdebug10lock_mixinI16objc_lock_base_tEEEb + 156
	14  libobjc.A.dylib                     0x00000001a2caa5c4 lookUpImpOrForward + 884
	15  libobjc.A.dylib                     0x00000001a2ca9f64 _objc_msgSend_uncached + 68
	16  AppKit                              0x00000001a630c59c NSApplicationMain + 376
	17  PDFPhoto Protector                  0x0000000100bd7618 $sSo21NSApplicationDelegateP6AppKitE4mainyyFZ + 40
	18  PDFPhoto Protector                  0x0000000100bd75e0 $s18PDFPhoto_Protector11AppDelegateC5$mainyyFZ + 44
	19  PDFPhoto Protector                  0x0000000100bd76b0 main + 28
	20  dyld                                0x00000001a2cebf28 start + 2236
)
libc++abi: terminating due to uncaught exception of type NSException
(lldb) 
import Cocoa

@main
class AppDelegate: NSObject, NSApplicationDelegate {
975 次点击
所在节点    程序员
3 条回复
nenseso
2023-07-16 09:33:33 +08:00
6 CoreFoundation 0x00000001a30df058 _CFLocaleCopyCurrentGuts + 816
7 CoreFoundation 0x00000001a30decfc +[NSLocale currentLocale] + 16
8 Foundation 0x00000001a4044dcc -[NSUserDefaults(NSUserDefaults) init] + 1136
9 Foundation 0x00000001a4044910 +[NSUserDefaults(NSUserDefaults) standardUserDefaults] + 64
这里能找到吗?它怎么调到 NSLocale 那里的
emperinter
2023-07-16 15:48:59 +08:00
@nenseso 找过这个,没在项目中找到任何相关用法,也尝试过程序运行初始阶段设置一段默认配置 NSUserDefaults 也不起作用
emperinter
2023-07-16 16:27:41 +08:00
目前程序基本定位可能找出来了,确实是 NSUserDefaults 的问题,这个应该是自动生成的,具体原理也不清楚,找过相关文件等等删除后也不起作用,目前通过`defaults delete <bundle_id>`删除默认设置后就能运行了,目前还在寻找具体的解决方案。不过这个删除程序以及缓存等等都删除不了默认设置,也侧面反应了 mac 的程序删除还会有一大堆遗留文件存在,。

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/957078

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX