2013-01-21 2 views
1

Objective-C에서 며칠 동안 코딩을 시작했는데 위임에 대해 혼란 스럽습니다. 어느 누구도 도와 줄 수 있습니까? MyClassA.h에서Objective-C 프로그래밍의 통신 위임

@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

,536에서이

나는 문제는 내 테이블보기에 표시됩니다 아무것도

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

있습니다. 어떤 도움 ?? (구현 된 테이블 뷰 관련 메서드)

답변

1

몇 가지 사항을이 순서대로 살펴보십시오.

  1. Get here!은 대리인 메서드가 올바르게 발생했음을 나타 내기 위해 로그에 나타납니다.
  2. 설정 했습니까 self.delegate = myClassBInstance
  3. TableView Delegate/DataSource가 올바르게 설정 되었습니까?
  4. self.messages은 초기화 되었습니까?

그리고 Objective-C에서 클래스 이름이 소문자로 시작하는 것은 눈살을 찌푸리게합니다. 클래스 이름은 대문자로 시작하는 CamelCase 여야하며 변수는 소문자로 시작하는 camelCase 여야합니다.

+0

크리스에게 감사드립니다. 잘 작동한다. 미안 해요 내가 stackoverflow에 새로운 오전 때문에 투표 할 수 있습니다. – Helen

+0

도움이 되었다면 내 게시물을 답으로 수락 할 수 있습니다. 체크 표시를 클릭하면 답변을 수락하고 좋은 프로필을 만드는 데 필요한 몇 가지 사항을 얻을 수 있습니다. :) –