在非正式协议中委派变量

时间:2011-03-23 22:09:18

标签: iphone objective-c ios

假设我在类Foo中创建了一个名为Bar的对象。 Bar的委托是Foo,我想从这个[self.delegate variable]访问Foo中的变量。毫不奇怪,这会起作用,但会发出警告,说“找到了无变量的方法”所以我的问题是,如何声明我希望委托访问此变量而不重写getter和setter?

例如,如果我想声明委托方法,它看起来像这样:

@interface NSObject(Foo)
- (void)someMethod;
@end

我如何对变量做同样的事情?

1 个答案:

答案 0 :(得分:3)

标准模式是定义委托符合的protocol。例如:

@protocol BarDelegate
- (void) someMethod;
- (id) variable;
@end

然后在Bar.h中,您声明您的代表:

@interface Bar : NSObject {
    id<BarDelegate> delegate;
}

//alternately:
@property(nonatomic, retain) id<BarDelegate> delegate;
@end

Foo.h中,您声明符合协议:

@interface Foo : NSObject<BarDelegate> {
}
@end

然后编译器警告就会消失。