他の iOS アプリケーション プロジェクトで使用する静的ライブラリを作成しました。その仕組みは、アプリケーション プロジェクトが静的ライブラリにプロトコルを実装し、静的ライブラリのメソッドを呼び出すことです。次に、静的ライブラリは、呼び出し元のビューの上にビューを表示します。コードは次のとおりです。
デリゲートのメイン クラスの MyFile.h ファイル:
@protocol MyHandlerDelegate <NSObject>
- (void)infoRetrieved:(BOOL)success;
@end
@interface MyFile : UIViewController
{
id <MyHandlerDelegate> delegate;
}
@property (retain) id delegate;
MyFile.m には以下が含まれます。
- (void)showRewards
{
[[[self delegate] view] addSubview:view1];
}
ここで、ボタンが 1 つだけのダミー アプリケーションを作成したところ、これは正常に機能し、静的ライブラリは呼び出しビューの上にビューを正常に表示しました。次に、これをオープン ソース ゲームの TweetJump (Cocos2D 上に構築) で機能させる必要があります。ハイスコア クラスでは、ヘッダー ファイルをインクルードし、デリゲートを実装しました。実装ファイルでは、次のコードを呼び出します。
MyFile *mf = [[MyFile alloc] init];
[mf setDelegate:self];
[mf showRewards];
ご参考までに、私は Highscore クラス - HeaderとImplementationをホストしました。上記のメソッドを実行したときに発生するエラーは次のとおりです。
2013-04-16 23:54:42.658 tweejump[11502:c07] +[Highscore view]: unrecognized selector sent to class 0xecc08
2013-04-16 23:54:42.661 tweejump[11502:c07] *** Terminating app due to uncaught exception 'NSInvalidArgumentException', reason: '+[Highscore view]: unrecognized selector sent to class 0xecc08'
私はそれが退屈な質問であることを知っています. 大変助かります。ありがとう