1. ホーム
  2. ios

[解決済み] 互換性のない型 'ViewController *const_strong' から 'id<Delegate>' に代入される。

2023-05-10 21:15:20

質問

私のアプリでは、以下のように設定するとセマンティック問題の警告が表示されます。 ViewController.delegate = self . 検索して同じような投稿を見つけましたが、どれも私の問題を解決することができませんでした。

ViewController.m:

GameAddViewController *gameAddViewContoller = [[navigationController viewControllers] objectAtIndex:0];
gameAddViewContoller.delegate=self;

を設定すると、エラーメッセージが表示されます。 .delegate=self .

GameAddViewController.hです。

@protocol GameAddViewControllerDelegate <NSObject>

- (void)gameAddViewControllerDidCancel:(GameAddViewController *)controller;
- (void)gameAddViewController:(GameAddViewController *)controller didAddGame:(Game *) game;

@end

@interface GameAddViewController : UITableViewController <GameAddViewControllerDelegate>
{
sqlite3         *pitchcountDB;
NSString        *dbPath;
}
@property (nonatomic, strong) id <GameAddViewControllerDelegate> delegate;
...
@end

ViewController.h:

#import "GameAddViewController.h"

@class ViewController;
@protocol ViewControllerDelegate <NSObject>
- (void)ViewControllerDidCancel:(ViewController *)controller;

@end
@interface ViewController : UIViewController <ViewControllerDelegate>
-(void) checkAndCreateFile;
@end

警告メッセージを解決するために正しい方向を示すことができる人はいますか?

どのように解決するのですか?

この行で:

gameAddViewContoller.delegate=self; 

selfは ViewController という型であり、これは GameAddViewController プロトコルに準拠していません。