Странен проблем поради блокиране на поддръжката за iOS 3.1.3

тъй като редовно тествам приложението си на устройство 3.1.3, трябваше да добавя флаг за свързване "-weak_library /usr/lib/libSystem.B.dylib", за да поддържам блокове там. Това не беше проблем, докато не започнах да добавям малко кодиране на gamecenter от пробите на Apple. Само в симулатора тогава се сблъсках с мигновен срив (EXC_BAD_ACCESS) някъде дълбоко в библиотеките на Apple, когато блок (дори празен) се предава като обратно извикване за удостоверяване в GC кодирането. Когато предоставя нула като обратно извикване, влизането в GC работи добре и приложението продължава. Въпреки това работи добре на всички реални устройства (iPad, iPhone с iOS 4.3, iPod с iOS 3.1.3 -- разбира се без GC тогава). Когато премахна флага за слаба връзка за линкера, той също ще работи без проблеми в симулатора. Някой има ли представа какво се случва там? Това не е задоволително решение за добавяне на флага за свързване само всеки път, когато искам да разположа на моя древен iPod.

Благодаря, habitoti


person habitoti    schedule 12.05.2011    source източник
comment
Проблемът е просто грешка в симулатора на iOS. Кодовете работят добре на устройството. Напълних радара на репортера за грешки на Apple (радар: //9470793)   -  person gcamp    schedule 31.05.2011


Отговори (1)


Инженер на Apple знаеше правилния отговор:

-weak_library /usr/lib/libSystem.B.dylib нарушава iOS симулатора. Вместо това използвайте -weak-lSystem.

Това наистина работи!

person habitoti    schedule 04.06.2011