不调用委托方法中的类实例方法

时间:2013-08-11 23:47:44

标签: objective-c methods delegates

红色,蓝色和黄色分为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

1 个答案:

答案 0 :(得分:0)

显示如何创建和连接所有对象。您在哪里分配RedClass的实例并将其分配给red @property?你在哪里设置代表?

如果答案是你没有,那么你的代码什么都不做,因为在Objective-C中, nil吃消息