2012-10-30 3 views
0

으로 전송되었습니다. iDevice 프로그래밍을 배우려고합니다. 다른 타사 라이브러리와의 인터페이스에 사용되는 새로운 타사 라이브러리 사용법을 배우십시오. 프로젝트. 라이브러리는 아쉽게도 문서화가 잘되어 있지 않아 한 예제 프로그램의 작동 방식을 파악하는 데 어려움을 겪고 있습니다. 어떻게 작동하는지에 대한 내 팀의 두 가지 주요 이론은 "부두"와 "닌자 마술"입니다.+ [NSTimer timerWithTimeInterval : block : repeats :] : 인식 할 수없는 셀렉터가 클래스

필자는 새로운 기능의 프로젝트에 예제 애플리케이션을 전문적으로 보이게하기 위해 추가 된 모든 종소리와 호루라기의 일부가 아닌 핵심 기능의 일부인 것처럼 천천히 조각을 복사하고 그 (것)들을 일하기 위하여. 지금은이 오류를 받고 있어요 : *** Terminating app due to uncaught exception 'NSInvalidArgumentException', reason: '+[NSTimer timerWithTimeInterval:block:repeats:]: unrecognized selector sent to class 0x144e790'

이미 타이머와 아무 상관이 원본 파일에서 모든 것을 복사 한

, 여기에 재현 :

@property (nonatomic) NSTimeInterval currentTime; 
... 
@synthesize currentTime; 

// lots of other stuff that has nothing to do with Timers 

-(void)setCurrentTime:(NSTimeInterval)time { 
    [self willChangeValueForKey:@"currentTime"]; 
    currentTime = time; 
    [self didChangeValueForKey:@"currentTime"]; 
} 

는 그 무엇을 찾고 선택 추가해야합니까?

편집 :. TC의 요청에

내가 도서관에서 그 방법을 찾고 가고, 자신의 파일이 발견 :

#import <Foundation/Foundation.h> 

/** 
* A block based extension for NSTimer 
*/ 

@interface NSTimer (EMAdditions) 

/** 
* Allows you set a block for execution when the timer fires. 
* @param interval The time interval 
* @param block The block to execute 
* @param repeat A flag to indicate if the block should continuously repeat 
*/ 
+(NSTimer *)timerWithTimeInterval:(NSTimeInterval)interval block:(void(^)(void))block repeats:(BOOL)repeat; 

@end 

나는이 액세스 할 수없는 라이브러리의 소스 코드 (그냥 큰 .a 파일)이지만이 메서드에 대한 구현이 있으면 안됩니까? 이 파일이있는 # import를 시도했지만 문제가 해결되지 않았습니다. [: 블록 : 반복 : NSTimer timerWithTimeInterval]

+1

NSTimer에서 카테고리를 복사해야합니다. NSTimer는 아마도 라이브러리의 일부이기도합니다. "timerWithTimeInterval :"을 검색하면 도움이됩니다. –

+0

@tc. 나는 이것을 선언하는 .h 파일을 발견했다. 카테고리를 어떻게 복사/추가 할 수 있을까? 라이브러리는 .h 파일과 .a 파일의 묶음입니다. 관련 .h 파일을 #imported했고 .a 파일을 빌드 프로세스에 포함 시켰습니다. 그 밖의 필요한 작업은 무엇입니까? –

+0

링크 플래그에'-ObjC' 또는'-all_load'를 추가해야 할 수도 있습니다. –

답변

1

tc. 이것은 라이브러리의 NSTimer 부분을 모두 포함하지 않는 링커 문제였습니다.

해결 방법은 -all_load 플래그를 링커에 추가하는 것이 었습니다.

0

글쎄, NSTimer이 선택을 찾고있는 오류를 나타납니다 때문에 가능한 것입니다,

도 일이 아니다 설명서에 보면 어떤 라이브러리를 그 기능을 NSTimer에 추가 사용하고 있습니까?

NSTimer에 유사 유일한 기존의 기능

은 다음과 같습니다 [NSTimer timerWithTimeInterval : 호출 : 반복 :] [timerWithTimeInterval : 대상 : 선택 : 사용자 정보 : 반복 :]

당신은 타이머가 setCurrentTime를 호출 할 경우 타이머가 setCurrentTime를 구현하는 동일한 파일에 초기화됩니다, 당신은

는 희망이

1

NSTimer 카테고리를 추가하는 데 도움이 (setCurrentTime을 :) @ 선택기에 두 번째, 자기로 설정 대상 및 설정 선택을 사용할 수 있습니다 와이 우리의 계획. Here이 파일입니다 (NSTimer+Blocks.hNSTimer+Blocks.m을 추가하십시오).

+0

좋은 제안이지만, 내가 사용하고있는 라이브러리가 이것에 대한 자체 구현을 가지고 있으며, 라이브러리가이를 사용하는 메소드를 어디에서 호출하는지 모르기 때문에 이것을 바꿀 수는 없습니다. (아주 좋은) 라이브러리를 링크했습니다. –

관련 문제