1

コンパイル時に次のエラー メッセージが表示されます。

2011-11-27 14:59:32.049 Storyboard[12104:f803] -[TargetViewController setPeople:]:unrecognized selector sent to instance 0x6d50310
2011-11-27 14:59:32.051 Storyboard[12104:f803] *** Terminating app due to uncaught exception 'NSInvalidArgumentException', reason: '-[TargetViewController setPeople:]: unrecognized selector sent to instance 0x6d50310'
*** First throw call stack:
(0x13c5052 0x1556d0a 0x13c6ced 0x132bf00 0x132bce2 0x2877 0x1a9d6 0x1b8a6 0x2a743 0x2b1f8 0x1eaa9 0x12affa9 0x13991c5 0x12fe022 0x12fc90a 0x12fbdb4 0x12fbccb 0x1b2a7 0x1ca9b 0x2508 0x2465)
terminate called throwing an exception

おかしなことに、私の TargetViewController には「人」プロパティ (NSMutableArray) さえありません。

私のアプリの構造は、detailView を取得した tableView を持つ tabbarcontroller と、2 番目のタブに popover を持つ通常のビュー (targetVieController) があることです。

(ご覧のとおり、ストーリーボードを使用してすべてをセットアップしました。これは、私のアプリの名前でもあります。

迅速なヘルプをいただければ幸いです。


編集

アプリの読み込みが開始されるとすぐに、コンパイラがエラーをスローすることを追加する必要があるかもしれません…</p>

Michaels と MrMusic の提案に従って、コール スタックで人を検索したところ、次のようになりました。

_cmd = SEL 0x6eae setPeople:(これはブレークポイントがあるという単なる通知だと思います)

そして、驚くべきことに、「人間」を含む配列がありますが、他のタブのテーブルビューには表示されません。

バックトレース:

#0  -[TargetViewController setPeople:] (self=0x6891f90, _cmd=0x6e8e, b=0x689a8d0) at /Developer/Projects/Storyboard/Storyboard/TargetViewController.m:73
#1  0x000027c7 in -[CoverdaleAppDelegate application:didFinishLaunchingWithOptions:] (self=0x6a7a650, _cmd=0x4c796a, application=0xad74840, launchOptions=0x0) at /Developer/Projects/Storyboard/Storyboard/CoverdaleAppDelegate.m:44
#2  0x0001a9d6 in -[UIApplication _callInitializationDelegatesForURL:payload:suspended:] ()

#3  0x0001b8a6 in -[UIApplication _runWithURL:payload:launchOrientation:statusBarStyle:statusBarHidden:] ()
#4  0x0002a743 in -[UIApplication handleEvent:withNewEvent:] ()
#5  0x0002b1f8 in -[UIApplication sendEvent:] ()
#6  0x0001eaa9 in _UIApplicationHandleEvent ()
#7  0x012affa9 in PurpleEventCallback ()
#8  0x013991c5 in __CFRUNLOOP_IS_CALLING_OUT_TO_A_SOURCE1_PERFORM_FUNCTION__ ()
#9  0x012fe022 in __CFRunLoopDoSource1 ()
#10 0x012fc90a in __CFRunLoopRun ()
#11 0x012fbdb4 in CFRunLoopRunSpecific ()
#12 0x012fbccb in CFRunLoopRunInMode ()
#13 0x0001b2a7 in -[UIApplication _run] ()
#14 0x0001ca9b in UIApplicationMain ()
#15 0x00002458 in main (argc=1, argv=0xbffff644) at /Developer/Projects/Storyboard/Storyboard/main.m:16
4

2 に答える 2

1

プロジェクトで「.people」と「setPeople」を検索して、そのNSMutableArrayコレクションがどこに設定されているかを確認します。people常に適切なオブジェクト ( people プロパティを持つオブジェクト、または people プロパティを持つオブジェクトのサブクラス) に設定していることを確認してください。

編集: どこかで people コレクションを設定しようとしています。「.people」と「setPeople」を検索しても文字どおり何も返されない場合は、おそらく IB または StoryBoard の何かが人を設定しようとしています。私の最初の考えは、一部のビュー コントローラーのタイプが誤って TargetViewController であり、人を設定しようとしているということでした (おそらくmyViewController.people = ...、myViewController が間違ったタイプであると言っているのでしょう。

于 2011-11-27T16:55:19.297 に答える
0

おそらくどこかでメモリリークが発生しています。setPeople メソッドを持つクラスが何であれ、どこかに適切に保持されていない可能性があります。

于 2011-11-27T17:11:26.723 に答える