Objective-C编程中的通信代表团

时间:2013-01-21 18:34:31

标签: objective-c delegates tableview

我已经开始在Objective-C编写了好几天了,我对代表团感到很困惑。有人可以帮忙吗?

在MyClassA.h中

@protocol MyClassADelegate <NSObject>

- (void)haveANewMessage:(NSString*)message;

@end

@interface myClassA : NSObject <NSStreamDelegate> {
    __unsafe_unretained id<MyDelegate> _delegate;
}
@property (nonatomic, assign) id<MyClassADelegate> delegate;

@end

在myClassB.h中

@interface myClassB : NSViewController <MyTableViewDelegate,MyClassADelegate>

@property (nonatomic, strong) myClassA* instance;

@property (nonatomic, strong) IBOutlet NSTableView* tableView;

@property (nonatomic, strong) NSMutableArray* messages;

@end

在myClassA.m

我有

[self.delegate haveANewMessage:@"Messages"];

和myClassB.m

我有

- (void) haveANewMessage:(NSString *)message{
    NSLog(@"Get here!");
    [self.messages addObject:message ];
    [self.tableView reloadData];
}

问题是我的表视图中没有显示任何内容。任何帮助? (实现了表视图相关方法)

1 个答案:

答案 0 :(得分:1)

按顺序查看一些事项。

  1. 您的日志中是否显示Get here!表示您的委托方法正在被正确解雇?
  2. 您是否设置了self.delegate = myClassBInstance
  3. 您的TableView Delegate / DataSource是否正确设置?
  4. self.messages已初始化了吗?
  5. 作为旁注,在Objective-C中,您的班级名称以小写字母开头是不受欢迎的。类名应该是以大写字母开头的CamelCase,变量应该是以小写字母开头的camelCase。