[英]MFSideMenu Delegate Method not called from HomeViewController Class
[英]class instance method in delegate method is not called
有红色,蓝色和黄色3类。 每当按下按钮时,黄色类都会通知蓝色类,并通过委托将字符串传递回去。 这一点工作正常。 现在,蓝色类正在尝试在委托实现方法中调用红色类实例方法displayString。 但是由于某种原因,从未调用过此实例方法。 调试后,我发现[self.red displayString:col];
中的self.red为null [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
//正在实现委托示例并调用示例类的类实例方法的类
// 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
显示如何创建和连接所有对象。 您在哪里分配RedClass
实例并将其分配给red
@property
? 您在哪里设置代表?
如果答案是否定的,那么您的代码将不执行任何操作,因为在Objective-C中, nil吃掉message 。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.