Aplikacja ulega awarii po aktualizacji Xcode do wersji 4.5. Przypisanie zachowanego obiektu do zmiennej unsafe_unretained
W mojej klasie mamdispatch_queue_t
właściwość zadeklarowana w ten sposób:
@property (nonatomic, assign) dispatch_queue_t queue;
Następnie w mojej metodzie init:
- (id)initWithServerUrls: (NSString*)serverUrls
{
if (self = [super init])
{
_queue = dispatch_queue_create("com.xxx.my_send_queue", DISPATCH_QUEUE_SERIAL);
}
return self;
}
W Xcode 4.4.1 działał i nie powodował żadnych problemów (aplikacja testowana + w sklepie). Teraz po uaktualnieniu do Xcode 4.5 aplikacja ulega awariiEXC_BAD_ACCESS a Xcode ostrzega mnie w tej linii mówiąc:
Przypisanie zachowanego obiektu do zmiennej unsafe_unretained; obiekt zostanie zwolniony po przypisaniu
Apple zaktualizował kompilator w Xcode 4.5 z LLVM 4.0 do LLVM 4.1, ale nie mam pojęcia, dlaczego mój kod ulega teraz awarii.
Przeszedłem przez kod i katastrofa dzieje się tuż po tej linii. Czy masz jakieś pomysły, co może być nie tak i jak mogę to naprawić?
ROZWIĄZANIE:
Udało mi się go uruchomić z obydwoma pakietami SDK. Właśnie dodałem:
#if OS_OBJECT_USE_OBJC
@property (nonatomic, strong) dispatch_queue_t queue; // this is for Xcode 4.5 with LLVM 4.1 and iOS 6 SDK
#else
@property (nonatomic, assign) dispatch_queue_t queue; // this is for older Xcodes with older SDKs
#endif
Mam nadzieję, że ktoś uzna to za przydatne