1

iOS 애플리케이션에서 백그라운드 앱 새로 고침을 시도하고 있습니다. 그러나 코드 블록을 이해하는 데 문제가 있습니다.코드 블록을 속성 목표에 할당하십시오. c

나는 그것에 대한 연구를 해왔으며, 지금까지 초보자의 이해가 있다고 말할 수 있습니다. 해당 메서드는 다음과 같습니다.

-(void)application:(UIApplication *)application performFetchWithCompletionHandler:(void (^)(UIBackgroundFetchResult))completionHandler{ 

이 메서드는 UIBackgroundFetchResult 반환 형식을 원합니다. 하지만 내 응용 프로그램의 복잡성으로 인해 쉽게 반환 할 수는 없습니다. 백그라운드 모드에서 인터넷에서 데이터를 가져올 때 많이 발생합니다.

해당 메서드의 본문에는 완료 블록이있는 사용자 지정 메서드가 있습니다. 내가 뭘 하려는지 완성 처리기에 할당 될 내 코드에서 다른 사용자 지정 메서드를 정의합니다. performFetchWtihCompletionHandler 방법 구현에서

@property (copy, nonatomic) void (^fetchCompleted)(UIBackgroundFetchResult); 

, 내 데이터 관리자를 호출합니다 : 나의 데이터 관리자에서

이, 내가 속성이 정의 내 다운로드가 완료되면

-(void)fetchNewDataWithCompletionHandler:(void (^)(UIBackgroundFetchResult))completionHandler{ 
    _fetchCompleted = completionHandler; 

    _state = DMSMT_WaitingForPartnerData; 
    [self getActiveQueues]; 
} 

, I fetchCompleted 메소드를 호출하십시오.

[self fetchCompleted]; 

여기에 내 pr 거짓말 oblem. UIBackgroundFetchResult 인수를 전달해야하지만 그렇게 할 방법이 없습니다. 나는 [self fetchCompleted : UIBackgroundFetchResultNewData]를 시도했다. 그러나 그것은 나에게 호통 쳤다.

아이디어가 있으십니까?

미리 감사드립니다.

편집

:

다음은 수정이었다. 너무 간단!

if(_fetchCompleted != nil){ 
    [self fetchCompleted](UIBackgroundFetchResultNewData); 
} 

답변

3

fetchCompleted를 메소드로 처리하고 있지만 블록입니다! 이 밖으로 시도 :

-(void)getActiveQueues { 
    // Do some work here 
    // When you are finished... 

    // Set the appropriate result 
    UIBackgroundFetchResult result; 

    // Check to make sure fetchCompleted is not NULL 
    if (self.fetchCompleted) { 
     // Invoke the block! 
     self.fetchCompleted(result); 
    } 
} 
+0

감사! 이것은 훌륭하게 작동했습니다. 나 같은 간단한 구문 문제 때 나는 그것을 싫어! 이봐도 – Salx

1

이 방법은 UIBackgroundFetchResult 반환 유형

아니,이 void 반환 형식을 원한다을 원한다. 매개 변수 중 하나는 UIBackgroundFetchResult입니다. 매개 변수는 결과를 반환하지 않습니다. UIBackgroundFetchResult은 변수의 유형 입니다.

오류가 발생한 것으로 보입니다. [self fetchCompleted]fetchCompleted 변수를 반환하는 getter입니다. 그것으로 아무 것도하지 않습니다.

블록을 수행하려면 함수와 유사한 구문을 사용하십시오. 예 : [self fetchCompleted]().

+0

이것도 효과가있어, 고마워! – Salx