红色,蓝色和黄色分为3类。每当按下一个按钮时,黄色类通知蓝色类并通过委托传回一个字符串。这个位工作正常。那么现在蓝色类试图在委托实现方法中调用红色类实例方法displayString。但是由于某种原因,从未调用此实例方法。调试后,我发现[self.red displayString:col];
中的self.red为空。但我在另一个Blue类的类实例方法中使用self.red,然后self.red为NOT 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
// YellowClass
@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
答案 0 :(得分:0)
显示如何创建和连接所有对象。您在哪里分配RedClass
的实例并将其分配给red
@property
?你在哪里设置代表?
如果答案是你没有,那么你的代码什么都不做,因为在Objective-C中, nil吃消息。