0

iPhone OS 2.2.1で次のエラーでアプリがクラッシュする理由について、誰かが光を当てることができますか

dyld: Symbol not found: _OBJC_CLASS_$_NSPredicate
  Referenced from: /var/mobile/Applications/456F243F-468A-4969-9BB7-A4DF993AE89C/AppName.app/AppName
  Expected in: /System/Library/Frameworks/Foundation.framework/Foundation

弱いリンクの CoreData.framework があり、Base SDK を 3.0 に設定し、Deployment Target を SDK 2.2 に設定しています。

このアプリは、他の 3.0 機能が利用可能な場合は既に使用しており、それらに問題はありませんでした。しかし、明らかに、他の機能に使用される下位互換性メソッドは Core Data では機能しません。

アプリ デリゲートの applicationDidFinishLaunching が呼び出される前に、アプリがクラッシュします。

デバッガーのログは次のとおりです。

[Session started at 2010-05-25 20:17:03 -0400.]
GNU gdb 6.3.50-20050815 (Apple version gdb-1119) (Thu May 14 05:35:37 UTC 2009)
Copyright 2004 Free Software Foundation, Inc.
GDB is free software, covered by the GNU General Public License, and you are
welcome to change it and/or distribute copies of it under certain conditions.
Type "show copying" to see the conditions.
There is absolutely no warranty for GDB.  Type "show warranty" for details.
This GDB was configured as "--host=i386-apple-darwin --target=arm-apple-darwin".tty /dev/ttys001
Loading program into debugger…
sharedlibrary apply-load-rules all
warning: Unable to read symbols from "MessageUI" (not yet mapped into memory).
warning: Unable to read symbols from "CoreData" (not yet mapped into memory).
Program loaded.
target remote-mobile /tmp/.XcodeGDBRemote-12038-42
Switching to remote-macosx protocol
mem 0x1000 0x3fffffff cache
mem 0x40000000 0xffffffff none
mem 0x00000000 0x0fff none
run
Running…
[Switching to thread 10755]
[Switching to thread 10755]
Re-enabling shared library breakpoint 1
Re-enabling shared library breakpoint 2
Re-enabling shared library breakpoint 3
Re-enabling shared library breakpoint 4
Re-enabling shared library breakpoint 5
(gdb) continue
warning: Unable to read symbols for ""/Users/alex/iPhone Projects/AppName/build/Debug-iphoneos"/AppName.app/AppName" (file not found).
dyld: Symbol not found: _OBJC_CLASS_$_NSPredicate
  Referenced from: /var/mobile/Applications/456F243F-468A-4969-9BB7-A4DF993AE89C/AppName.app/AppName
  Expected in: /System/Library/Frameworks/Foundation.framework/Foundation

(gdb) 
4

2 に答える 2

1

iPhone OS 2.2 との下位互換性がなければ、リテラル クラス シンボルで NSPredicate を参照できないようです。

そこで、NSPredicate への参照を次のように変更しました。

[fetchRequest setPredicate:[NSClassFromString(@"NSPredicate") predicateWithFormat:@"EntryId == %@", [NSNumber numberWithInt: index]]];

そしてそれは今動作します。

https://devforums.apple.com/message/225591#225591を参照してください

于 2010-05-27T02:03:59.343 に答える
0

申し訳ありませんが、質問をもう一度読んでください。フレームワーク自体は弱くリンクできないようです。Core Dataフレームワークで2.xターゲットを持つことができないことを意味していると思います:(

つまり、ターゲット プラットフォームではフレームワーク全体が利用できず、弱いリンクは適用されません。

于 2010-05-26T00:36:03.743 に答える