iPhone의 패턴은 현재 클래스에서 구현하는 비공식 프로토콜을 사용하여 ASync 연결 호출을 사용한다는 것을 알고 있습니다.iPhone에서 동기화 연결을 사용하면 문제가 있습니까?
필자의 경우 네트워킹 스태프를 수행하고 데이터를 ViewController로 반환하는 유틸리티 클래스를 만들었습니다. 그래서, (이럴 나쁜)
MyUtilityConnection* utilConn = ....
while (true)
{
if ([utilConn checkUnderlyingAsyncConnectionFinishedLoading]) break;
}
NSData* dataFromUrl = [utilConn dataFromUnderlayingConn];
: 내가 찾을
는 R 나는 ViewControlle 그런 다음에 코드 블록을 쓰기 때문에 유틸리티 클래스에 비동기로 연결 모델을 구현하기 부적절하다 질문은, 아이폰에서 동기화 연결 모델을 사용하면 문제가 발생할 수 있습니까? 및 솔루션? 동기 연결을 할 수있는 모든 수단
블럭을 사용하지 않고 일반 셀렉터 나 함수 포인터를 사용하면 어떨까요? 그래서 저는 다음과 같은 것을 가질 것입니다 : My ViewController에서'MyUtilityConnection util = [MyUtilityConnection utilConn] urlConn whenDonePerformSelector : @selector (some_local_method_in_the_viewController_calss)];를 사용하고,'MyUtilityConnection' 클래스에 비동기 함수 데이터가 수신 될 때 구현자가 선택기를 호출? –
그럴 수도 있습니다. 어쨌든 선택기를 호출 할 대상과 선택자를 매개 변수로 제공해야합니다. 함수 포인터에 대해 알고 있다면 블록에 대해 배우는 것에 관심이있을 수 있습니다. 기본적으로 블록은 함수 포인터와 매우 흡사합니다 (실제로는 해당 함수에서 영감을 얻은 구문과 매우 유사합니다). 그러나 더욱 강력합니다 (특히 변수를 캡처합니다 "클로저 (closure)"라고합니다). – AliSoftware
블록에 대해 더 배우고 싶다면 [블록에 대한 짧은 실용 가이드] (http://developer.apple.com/library/ios/#featuredarticles/Short_Practical_Guide_Blocks/_index.html) 및 [블록 프로그래밍 토픽 ] (http://developer.apple.com/library/ios/#documentation/cocoa/Conceptual/Blocks/Articles/00_Introduction.html) 페이지를 방문하십시오. _ 귀하가 혼란 스럽거나 앱을 호환 가능하게 만들려는 경우 4.0 이전의 iOS에서 타겟 + 셀렉터를 통과하여 블록 대신 완료 호출 - 좋고 완전히 수용 가능하지만 덜 섹시한 솔루션 _;) – AliSoftware