1

我已经开始用 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];
}

问题是我的表格视图中没有显示任何内容。有什么帮助吗??(实现的Table-View相关方法)

4

1 回答 1

1

有几件事要调查,按这个顺序。

  1. 是否Get here!出现在您的日志中以表示您的委托方法被正确触发?
  2. 你设置了吗self.delegate = myClassBInstance
  3. 您的 TableView 委托/数据源设置是否正确?
  4. 已经self.messages初始化了吗?

附带说明一下,在 Objective-C 中,您的类名以小写字母开头是不受欢迎的。类名应为以大写字母开头的 CamelCase,变量应为以小写字母开头的 CamelCase。

于 2013-01-21T18:56:01.183 回答