I have started coding in Objective-C for several days, and I am really confused about delegation. Could any one help?
In 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
In myClassB.h
@interface myClassB : NSViewController <MyTableViewDelegate,MyClassADelegate>
@property (nonatomic, strong) myClassA* instance;
@property (nonatomic, strong) IBOutlet NSTableView* tableView;
@property (nonatomic, strong) NSMutableArray* messages;
@end
In myClassA.m
I have
[self.delegate haveANewMessage:@"Messages"];
and in myClassB.m
I have
- (void) haveANewMessage:(NSString *)message{
NSLog(@"Get here!");
[self.messages addObject:message ];
[self.tableView reloadData];
}
The problem is nothing is shown in my table view. Any help??
(Implemented Table-View Related Methods)
A few things to look into, in this order.
Get here!appearing in your logs to signify your delegate method is being fired properly?self.delegate = myClassBInstanceself.messagesbeen initialized?And as a side note, in Objective-C it is frowned upon for your class names to start with a lowercase letter. Class names should be CamelCase starting with a capital letter and variables should be camelCase starting with a lowercase letter.