假设我在类Foo中创建了一个名为Bar的对象。 Bar的委托是Foo,我想从这个[self.delegate variable]
访问Foo中的变量。毫不奇怪,这会起作用,但会发出警告,说“找到了无变量的方法”所以我的问题是,如何声明我希望委托访问此变量而不重写getter和setter?
例如,如果我想声明委托方法,它看起来像这样:
@interface NSObject(Foo)
- (void)someMethod;
@end
我如何对变量做同样的事情?
答案 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
然后编译器警告就会消失。