有红、蓝、黄三个等级。每当按下按钮时,黄色类会通知蓝色类并通过委托传回一个字符串。这一点工作正常。好吧,现在蓝色类正在尝试在委托实现方法中调用红色类实例方法 displayString。但是由于某种原因,这个实例方法永远不会被调用。调试后我发现 self.red 在[self.red displayString:col];
. 但是我在 Blue 类的另一个类实例方法中使用 self.red ,然后 self.red 不是 NULL 。这里有什么遗漏吗
@interface RedClass : NSObject
-(void)displayString:(NSString*)str;
@end
@implementation RedClass
-(void)displayString:(NSString*)str
{
NSLog(@"The string:%@",str);
}
@end
// BlueClass.h
@interface BlueClass:UIViewController<YellowDelegate>
@property (nonatomic, strong) RedClass *red;
@end
//实现delegateExample并调用示例类的类实例方法的类
// BlueClass.m
@implementation BlueClass
- (void)colorChanged:(NSString*)col
{
[self.red displayString:col];
}
@end
//黄色类
@protocol YellowDelegate<NSObject>
-(void)colorChanged:(NSString *)col;
@end
@interface YellowClass:UIView
@property (nonatomic, weak) id <YellowDelegate> delegate;
@end
//YellowClass.m @implementation YellowClass
(IBAction)btnPressed:(id)btn
{
[self.delegate colorChanged:@"yellow"];
}
@end