Ios5 协议中的方法未在iOS中实现
我不理解,因为错误显示为“协议中的方法未实现” myProtocol.hIos5 协议中的方法未在iOS中实现,ios5,protocols,Ios5,Protocols,我不理解,因为错误显示为“协议中的方法未实现” myProtocol.h #import <Foundation/Foundation.h> @protocol myProtocol <NSObject> -(UIImage *)transferImage; @end secClass.delegate=self;[secClass callTransfer];NSLog(@“我在发件人中”);[self.navigationController pushView
#import <Foundation/Foundation.h>
@protocol myProtocol <NSObject>
-(UIImage *)transferImage;
@end
secClass.delegate=self;[secClass callTransfer];NSLog(@“我在发件人中”);[self.navigationController pushViewController:secClass动画:是];}
- (void)didReceiveMemoryWarning
{
[super didReceiveMemoryWarning];
// Dispose of any resources that can be recreated.
}
@end
SecondViewController.h
#import "SecondClass.h"
@interface ViewController : UIViewController<myProtocol, UINavigationControllerDelegate>
{
UIView *view;
}
@property (nonatomic,retain) UIImageView *imageView;
- (IBAction)sendImage:(id)sender;
@end
#import <UIKit/UIKit.h>
#import "myProtocol.h"
#import "ViewController.h"
@interface SecondViewController : UIViewController<myProtocol,UINavigationControllerDelegate> {
UIView *secondView;
IBOutlet UIImageView *myImage;
id <myProtocol> myDelegate;
}
@property (nonatomic,strong) UIImageView *myImage;
@property(nonatomic,weak) id delegate;
-(void)callTransfer;
@end
在
SecondViewController
中调用delegate
方法,但没有插入它。如果您收到类似的警告。。。未实现
它只是说,您忘记包含一个方法。
您可以像这样插入方法
-(UIImage *)transferImage{
//do something here if delegate has been called
}
或者您只需在委托
块中的方法上方添加一个参数:
@optional
如果不指定它,所有方法都将设置为
@required
initial。这与您在协议实现中声明了一个方法但没有实现相同的方法一样简单。在第二个VC中,您尚未实现“transfer image”方法。因此,编译器下次生成警告时,您应该插入对这个问题非常重要的代码。在这种情况下,您只需要委托
文件,可能还需要出现警告的文件。也许你可以编辑你的帖子,将其缩短一点。你能看看其中一篇帖子是否回答了你的问题吗?我还有一个问题:如果没有实现所需的方法,应用程序也会工作并发出警告,但它应该会给出一个错误,对吗?谢谢,这正是我想要的
-(UIImage *)transferImage{
//do something here if delegate has been called
}
@optional