"MyCLController"클래스의 데이터 소스 대리인 인 "dataSource"속성을 가진 "MyCLController"클래스가 있습니다. "MyCLController"클래스는 위치 이벤트 등을 처리하며,이 클래스는 여러 sqlite DB 테이블을 쿼리하고 업데이트하기위한 여러 메소드가 필요합니다.사용자 정의 대리자 속성에서 클래스 메서드를 호출하는 방법은 무엇입니까?
@protocol MyCLControlerDataSourceDelegate <NSObject>
@required
+ (NSArray *)getAllRegions;
+ (void)saveVisitTimeForRegionID:(NSInteger);
-(void)someInstanceMethod;
@end
을 그리고 여기에 데이터 소스 위임 속성 선언이다 : 그 이유로, 나는 데이터 소스 위임 클래스가 구현해야하는지 방법을 선언한다 "MyCLControlerDataSourceDelegate"프로토콜 만든 allocing 후
@property (nonatomic, assign) id <MyCLControlerDataSourceDelegate> dataSource;
을/INITING 내 "MyCLController", MyCLControlerDataSourceDelegate 프로토콜을 구현하는 클래스 유형의 객체와 dataSource 속성을 연결합니다.
"MyCLController"를 느슨하게 결합하도록 설계하여 어떤 유형의 클래스 "dataSource"속성인지 알 필요가 없습니다. 인스턴스 메소드를 호출 할 때 모든 것이 훌륭합니다. 예를 들어
[self.dataSource someInstanceMethod];
호출 클래스 메소드는 어떻습니까? 나는 클래스 메소드가 [ClassName classMethod]라고 불려야 만하지만 "MyCLController"가 덜 독립적이라는 것을 알고있다.
왜 클래스 메소드입니까? 위임자를 위해해야하는 인스턴스가 있다면 모든 대리자 메서드가 인스턴스 메서드 여야합니다. – jrturton
왜냐하면, 필자는 필자의 작업 만 구현해야하고 프로젝트의 작업 규칙을 제동하지 않아야하는 프로젝트에 참여하고 있기 때문입니다. 모든 DB 클래스와 그 쿼리 메소드는 클래스 메소드이며,이 클래스는 싱글 톤 (DB 싱글 톤을 사용하는 것을 제외하고), 그냥 쿼리 DB입니다. 그리고 실제로 나는 그 클래스들을 할당/초기화 할 필요가 없습니다. 나는이 관점을 객관적인 관점에서가 아니라 사용자의 관점에서 바라보고있다. 단지 호기심이 다른 방법으로 할 수 있습니다. – Centurion
코더로서, 나는 또한 objective-c와 iOS 사용자들로 식별 될 수 있으며, 그 관점에서 볼 때, 나는 그것이 나에게 편리하다고 느낀다. 하지만 가능하지 않다면 포기할 것입니다 :) – Centurion