【发布时间】:2011-09-02 22:27:34
【问题描述】:
好吧,这似乎是一个愚蠢的问题,但如果你能忍受我并阅读整个问题,你就会明白我为什么要问这个问题。
我在网上和这里也看到了很多很好的例子和解释,但我就是不明白。了解原因和方法对我来说很重要,所以不要使用文档中的一些示例(顺便说一句,在理解 Apple Docs 时我真的很烂,我使用 php.net 文档,有大量示例),因为那时我只是不明白。
我想要两个课程,一个 gardenClass。它有一个花数组,每朵花都是从花类中实例化的。所以,flowerClass 不知道实例化了什么样的花园。它有时只是尖叫着要水。
所以,如果这里有人可以为我解释一下,我将非常感激!
我试过了,根据我从你们那里得到的信息,这是我的尝试:
我的花园.h
#import "Flower.h"
@interface MyGarden : NSObject <WateringDelegate>
{
Flower *pinkFlower;
}
@end
我的花园.m
#import "MyGarden.h"
#import "Flower.h"
@implementation MyGarden
- (void) giveWaterToFlower
{
NSLog(@"Watering Flower");
}
- (void)viewDidLoad
{
pinkFlower = [[Flower alloc] init];
[pinkFlower setDelegate:self];
[pinkFlower startToGrow];
}
@end
花.h
@protocol WateringDelegate <NSObject>
@required
- (void) giveWaterToFlower;
@end
@interface Flower : NSObject
{
id <WateringDelegate> delegate;
}
@property (retain) id delegate;
- (void) startToGrow;
@end
花.m
#import "Flower.h"
@implementation Flower
@synthesize delegate;
- (void) needWater
{
[[self delegate] giveWaterToFlower];
}
- (void) startToGrow
{
[NSTimer scheduledTimerWithTimeInterval:10.0 target:self selector:@selector(needWater) userInfo:nil repeats:YES];
}
@end
我还没有导入任何 UIKit 或基础,因为我现在试图在这里做与代表相关的事情...... 那么,这是正确的吗?
【问题讨论】:
-
不清楚问题是什么;特别是在您的问题/示例中没有提及代表。现在我猜你想看看如何在花卉类上设置一个代表以指向花园,但那是我跳到一个假设,因为这里没有明确要求。
-
他想了解委托设计模式。对我来说似乎是一个非常简单的问题。
标签: objective-c delegates