在协议中创建委托方法

时间:2011-01-31 02:41:42

标签: objective-c delegates protocols derived-class

我似乎无法以我想要的方式构建我的协议,并且我已经缩小到使用派生类的问题。如果我使用可可类它似乎工作。这就是我的......

#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'之前得到错误“Expected')'”。如果我用UIView替换自定义类MyView,那么代码将编译。我希望有人看到我忽略的东西。任何想法都表示赞赏。

感谢。

2 个答案:

答案 0 :(得分:2)

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

此外,您可以使用@class代替导入。 e.g。

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

答案 1 :(得分:1)

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