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];
}

問題は、テーブルビューに何も表示されないことです。何か助けは?(実装されたテーブルビュー関連メソッド)

4

1 に答える 1

1

この順序で調べるべきいくつかの事柄。

  1. Get here!デリゲートメソッドが適切に実行されていることを示すためにログに表示されていますか?
  2. 設定しましたかself.delegate = myClassBInstance
  3. TableView Delegate / DataSourceは正しく設定されていますか?
  4. self.messages初期化されましたか?

ちなみに、Objective-Cでは、クラス名が小文字で始まることは眉をひそめています。クラス名は大文字で始まるCamelCaseで、変数は小文字で始まるキャメルケースである必要があります。

于 2013-01-21T18:56:01.183 に答える