在协议中创建委托方法

问题描述:

我似乎无法按照我想要的方式构建我的协议,并且我缩小了使用派生类的问题。如果我使用可可类,它似乎工作。以下是我有...在协议中创建委托方法

#import <Foundation/Foundation.h> 
#import "MyView.h" 

@protocol MyDelegate 
- (void)view:(MyView *)aView didDoSomethingWithString:(NSString *)string; 
@end 

的MyView的类是......

#import <UIKit/UIKit.h> 
@interface MyView : UIView { 
    NSString *whatever; 
} 
- (void)myMethod; 
@end 

@implementation MyView 
- (void)myMethod { 
doSomething... 
} 
@end 

所以,当我试图建立我得到“‘MyView的’前预期‘)’”的错误。如果我用UIView替换自定义类MyView,然后代码编译。我希望有人看到我忽略的东西。任何想法都表示赞赏。

谢谢。

+0

你是否在你的声明中包含你的协议声明和你的协议声明中的视图声明?我的意思是,两个.h相互引用? – seppo0010 2011-01-31 02:51:49

+0

OH DRATS!是的,我愿意。我有一个循环参考。腐烂的东西偷偷靠在我身上。在MyView类中,我有一个实现协议的id类型的引用。 “id ”我甚至没有发现它。谢谢! – Rob 2011-01-31 03:32:24

您确定MyView.h包含@interface MyView : UIView

此外,您可以使用@class而不是导入。例如

@class MyView; 
@protocol MyDelegate 
- (void)view:(MyView *)aView didDoSomethingWithString:(NSString *)string; 
@end
+0

抱歉。对错误的帖子发表评论。忽视。 – drekka 2011-01-31 02:57:28

尝试将@interface和@implementation部分放在不同的文件中(如果您当前在同一个文件中)。它看起来像你在MyView.m中的所有内容,并且你正在导入MyView.h,它不存在。