iPhone 4를 실행할 때이 앱을 만들었습니다. 자,이 응용 프로그램은 아이폰 4S에서 실행되지 않습니다.iPhone - Grand Central Dispatch가 iPhone 4S에서 올바르게 작동하지 않습니다.
나는 범인 구역을 GCD 파트로 확인했다. 여기있다 :
dispatch_group_t my_group = dispatch_group_create();
dispatch_queue_t queue1 =
dispatch_queue_create("Queue 1", NULL);
dispatch_queue_t queue2 =
dispatch_queue_create("Queue 2", NULL);
dispatch_group_async(my_group, queue1, ^{
[self doStuff1];
});
dispatch_group_async(my_group, queue2, ^{
[self doStuff2];
});
dispatch_group_notify(my_group, dispatch_get_main_queue(), ^{
// this is block 3, this is to be executed after both queues end processing
// this is never executed on iPhone 4S, but is executed on iPhone4
// no error message, but execution never starts inside this block
});
아이디어는 이것이다 : 두 개의 큐가 생성되고 그룹입니다. 그룹을 사용하여 비동기 적으로 두 대기열에 대한 작업을 시작합니다. 둘 다 끝나면 그룹은 다른 작업 블록을 시작합니다.
이것은 iPhone 4에서 멋지게 작동하지만 마지막 블록 3에는 도달하지 못했습니다.
그 이유는 무엇입니까? 모든 단서?
감사합니다.
멀티 코어 이론을 테스트하는 한 가지 방법은 iPad 2에서 실행됩니다. 스레딩 문제는 결코 보장 할 수 없지만 여러 코어로 더 쉽게 노출되는 경향이 있습니다. –
@DavidDunham - 멀티 코어 Mac에서 실행될 때 iOS 시뮬레이터에서 이와 같은 버그를 노출했습니다. 이것은 시뮬레이터가 유용 할 수있는 경우 중 하나입니다. 또한 CPUPalette 응용 프로그램을 사용하여 Mac에서 즉시 코어를 켜고 끌 수 있었지만 지금은 내 Lion 시스템에서 코어를 찾을 수 없습니다. –
@BradLarson이 코드의 문제점은 coremotion과 일부 하드웨어 기능이 필요하기 때문에 시뮬레이터를 사용할 수 없다는 것입니다. – SpaceDog