객관적 C에서 이와 비슷한 작업을 수행 할 수 있습니까? 예를 들어, 배열 수가 X이고, 그런 다음 Y가 발생하면 함수 Y가 트리거되기를 원하십니까? 따라서 NSArray에 대한 청취자가 포함됩니까?NSMutableArray의 크기에 대한 청취자 및 관찰자
답변
나는 당신이 배열의 변화를 듣는 관찰자를 만들 수 있다고 믿는다. 트리거되었을 때 배열의 크기를 검사하고 조건이 충족되면 메서드 Y를 호출 할 수 있습니다.
당신은 (예를 들어, 그것을 MutableArrayDelegate
를 호출) 프로토콜을 쓸 수, 다음 NSMutableArray
는 특정 이벤트가 발생하는 경우 대리자 메서드 호출 (적절하게 [super ...]
를 호출해야합니다) 연장.
@protocol MutableArrayDelegate
- (void)mutableArrayDidAddObject:(NSMutableArray *)mutableArray;
@end
@interface ObservableMutableArray : NSMutableArray
@property (nonatomic, assign) id<MutableArrayDelegate> delegate;
@end
@implementation ObservableMutableArray
@synthesize delegate;
- (void)addObject:(id)anObject
{
[super addObject:anObject];
[delegate mutableArrayDidAddObject:self];
}
@end
당신은 다음 서브 클래스에 대리자를 지정하고 프로토콜을 구현하여 이벤트를 수신 할 수 있습니다 : 예를 들어
는 청취자에게 오브젝트가 추가 될 때마다 추가 할 수 있습니다.
NSArray 클래스를 하위 클래스로 만들면 원시 인스턴스 메소드 인'count'와'objectAtIndex :'를 오버라이드해야합니다.'NSMutableArray'의 경우 더 많은 메소드를 오버라이드해야합니다 : http://developer.apple.com/library/ mac/# documentation/Cocoa/Reference/Foundation/Classes/NSMutableArray_Class/Reference/Reference.html # // apple_ref/occ/cl/NSMutableArray – hypercrypt
나쁘다. 당신이 '[슈퍼 ...]'많이 부르는 것 같네요 ... 정말 downvote받을 자격이 있니? 여전히 원하는 결과를 제공합니다. – sho
아니요, '슈퍼'를 호출하는 것만으로는 충분하지 않습니다. 직접 구현해야합니다. NSArray와 NSMutableArray는 클래스 클러스터이며, 아무것도 구현하지 않습니다. 배열을 만들면 private 서브 클래스를 얻게됩니다. 일반적으로 사용법과 구현 세부 사항은 중요하지 않지만 서브 클래 싱을하면 기본 인스턴스 메소드와 저장소를 직접 구현해야하므로 의존 할 수 없습니다 '슈퍼'. – hypercrypt
- 1. NSMutableArray의 NSMutableArray에 대한 addObject
- 2. OpenAL 청취자 오리엔테이션에 대한 설명
- 3. StompConnection에 대한 ActiveMQ 등록 청취자
- 4. Eclipse의 열린 파일에 대한 청취자
- 5. Box2D 연락처 청취자 및 필터 및 관절에 대한 빠른 질문
- 6. 레일 3 관찰자 및 CURRENT_USER
- 7. 밀도 및 크기에 대한 다른 리소스는 무엇입니까?
- 8. wifi 청취자
- 9. 스레딩 및 Java에서 관찰자 패턴
- 10. UIButtons 할당 NSMutableArray의 제목과 NSMutableArray의 UIButtons?
- 11. 청취자 - 완료된 이벤트 스트림에 대한 정보
- 12. Android의 시스템 환경 설정에 대한 모든 청취자
- 13. NSMutableArray의 딥 복사에 대한 일반적인 이해
- 14. NSMutableArray의 EXC_BAD_ACCESS
- 15. 액세스 청취자
- 16. NSMutableArray의 NSUserDefaults
- 17. - NSMutableArray의 에러하면
- 18. NSMutablearray의 NSMutablearray
- 19. Java의 청취자
- 20. 주소록 청취자
- 21. 청취자 다루기
- 22. 자바 : 관찰자 패턴 및 가비지 컬렉터
- 23. NSMutableArray의 다른 객체에 포인터 저장 및 변경
- 24. 장바구니 관찰자
- 25. 소장품에있는 관찰자
- 26. 동영상 크기에 대한 확인이 필요합니까?
- 27. 이진 검색 트리 및 관찰자 패턴이있는 카운터
- 28. NSMutableArray의 페이징 및 데이터가있는 동적 UIScrollView
- 29. 청취자 및 유효성 검사/다시 칠하기
- 30. C#의 청취자 및 제어 흐름
이것은 질문과 매우 유사합니다. http://stackoverflow.com/questions/302365/observing-an-nsmutablearray-for-insertion-removal. – Johnnywho