2012-01-02 1 views
0

내 개인적인 취향은 인터페이스 개체와 코드 실행을 구분하는 것입니다. 예를 들어 소다 클래스가 있다고 가정 해보십시오. 소다 클래스는 무게, 높이 및 브랜드 이름과 같은 속성을 가지고 있습니다.Objective-C 인터페이스 개체와 구현 분리

다른 클래스에는 "Brain"이 있습니다.

뇌가 NSTable에 Soda 객체를 채우길 원하지만, AppDelegate 클래스가 인터페이스 객체를 선언하기를 원합니다.


AppDelegate.h

@interface AppDelegate : NSObject <NSApplicationDelegate> 

@property (assign) IBOutlet NSTableView * sodaTable; 

@end 

Brain.m

@implementation Brain : NSObject 

- (void)aquireCaffine 
{ 
    /* Do stuff here that populates the sodaTable */ 
} 
분리의 어떤 형태로 할 것

. 또한 appDelegate가 호출을 처리하는 것을 원하지 않는다고 말합니다. 이것은 내가 오히려 AppDelegate.h에 다음을 수행하지 않는 게 좋을 것을 의미한다 :

[self aquireCaffineUsingTable:sodaTable]; 

은 아마도 내가 매우 오브젝티브 C는 지향하지 뭔가를하고 있어요,하지만 난 내 환경 설정하지 않는가?

답변

1

앱 대리인이 인터페이스 개체 만 선언하도록 할 수 있습니다. 어떤 시점에서 테이블의 데이터 소스를 테이블 데이터 소스 프로토콜 (NSTableViewDataSource)을 구현하는 객체로 설정해야합니다. 이 객체는 테이블의 -reloadData 메서드가 호출 될 때마다 테이블을 채 웁니다. 코드 또는 Interface Builder에서 테이블의 데이터 소스를 설정할 수 있습니다. 자세한 내용은 the docs을 참조하십시오.

+0

물론! 고맙습니다! – evdude100