我是Objective C的新手,并试图理解代表的概念。我有下面的代码,并且已经在构建中发生警告和错误的地方发表了评论。我正在使用最新版本的Xcode并使用Storyboard。客观C - 无法识别的代表
从MainViewController.h
#import <UIKit/UIKit.h>
#import "FinalViewController.h"
@class MainViewController;
@protocol MainViewControllerDelegate <NSObject>
- (void)sayHello;
@end
@interface MainViewController : UIViewController
@property (nonatomic, strong) id <MainViewControllerDelegate> delegate;
- (void)writeToMe;
. . .
@end
从MainViewController.m
#import "MainViewController.h"
#import "FinalViewController.h"
@interface MainViewController()
@end
@implementation MainViewController
- (void)viewDidLoad
{
[super viewDidLoad];
}
- (void)writeToMe
{
[self.delegate sayHello];
}
. . .
@end
从FinalViewController.h
#import <UIKit/UIKit.h>
#import "MainViewController.h"
@interface FinalViewController : UIViewController <NSCoding, MainViewController> //The ERROR below appears
//ERROR:Cannot find protocol declaration for ‘MainViewControllerDelegate’; did you mean ‘UIPageViewControllerDelegate’?
. . .
@end
从FinalViewController.m
#import "FinalViewController.h"
@interface FinalViewController()
@end
@implementation FinalViewController
- (void)viewDidLoad
{
[super viewDidLoad];
MainViewController *mainVC;
mainVC.delegate = self; //causes WARNING below
//WARNING:Assigning to ‘id <MainViewControllerDelegate> from incompatible type ‘FinalViewController *const__strong’
[mainVC writeToMe];
. . .
}
- (void)sayHello
{
NSLog(@"sayHello called");
}
@end
我已经研究了这个网站上类似问题的问题和反应,但还没有找到使用Storyboard的解决方案。
CW0007007:我按照您的建议更改了代码,仍然收到相同的错误。 –
CW0007007:构建成功,但NSLog语句未出现在控制台中。 –
在这里看到我的答案如何正确设置代理人: http://stackoverflow.com/questions/21331523/how-to-declare-events-and-delegates-in-objective-c/21331771#21331771 – CW0007007