2

いくつかのデータソースとデリゲートメソッドを宣言した UIView クラス ( X としましょう)しか持たない iOS フレームワークを作成しました。

  1. プロジェクトでフレームワークを使用していて、Xのオブジェクトを作成しようとすると、次のエラーが表示されます。

    Undefined symbols for architecture i386:
    "_OBJC_CLASS_$_X", referenced from:
    objc-class-ref in ViewController.o
    
  2. ここで、XIB で UIView を取得し、そのクラスをXに変更してアウトレットに接続し、次に setDelegate と setDatasource を実行すると、例外がスローされます。

    Terminating app due to uncaught exception 'NSInvalidArgumentException', 
    reason: '-[UIView setDataSource:]: unrecognized selector sent to instance 0x756f670
    

上記の2つのステップを実行しない場合。それは正常にビルドされ、実行されます。

質問が明確であることを願っています。事前に助けてくれてありがとう。

4

1 に答える 1

1

1に関しては:

その理由は、フレームワークが iPhone シミュレーター用に構築されていないためです。このSO Question of mineに記載されている CocosDenshion でも同様の問題がありました(ただし、誰かが何らかの理由でそれを気に入らなかった)。

最も簡単な解決策は、プロジェクトとフレームワークを Xcode ワークスペースに配置することです。Xcode は、必要に応じて iPhone シミュレーターのフレームワークを構築します。それをしたくない場合は、上記のリンクにある SO の質問の指示に従ってください。

2に関しては:

指定されたメソッドを提供する必要があります。UITableViewに基づいたクラスを変更し、それを に基づいたクラスに変更したようですが、UIView動作しません。から新しいクラスを派生させるUITableViewと、再び動き始めるはずです。

于 2013-09-18T06:00:34.960 に答える