iphone - 在非正式协议(protocol)中委托(delegate)变量

标签 iphone objective-c ios

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

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

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

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

最佳答案

标准模式是定义一个 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您声明您遵守协议(protocol):
@interface Foo : NSObject<BarDelegate> {
}
@end

然后编译器警告将消失。

关于iphone - 在非正式协议(protocol)中委托(delegate)变量,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5412244/

相关文章:

objective-c - iOS - 努力在 Obj-C/Swift 代码之间转换

ios - 查找与特定字符串的匹配项

ios - 应用程序加载器应用内购买导入消失

iphone - 创建静态库iOS错误

html - 是否可以显示一个日期,例如 22 号,右上角显示小号

iphone - 将图像从UIImagePickerController存储在iPhone中?

ios - Jenkins Pipeline 在多个模拟器和 sdk 版本上测试 iOS 应用程序

iphone - 将 PSD 解析为 Xcode/IB 的工作流程

iphone - 比较两个双变量 Objective-C

ios - 秒表应用程序不断崩溃