0

有红、蓝、黄三个等级。每当按下按钮时,黄色类会通知蓝色类并通过委托传回一个字符串。这一点工作正常。好吧,现在蓝色类正在尝试在委托实现方法中调用红色类实例方法 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
4

1 回答 1

0

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

如果答案是你不这样做,那么你的代码什么也不做,因为在 Objective-C 中,nil 吃掉了 messages

于 2013-08-12T00:59:02.280 回答