私のクラスでは、次のdispatch_queue_t
ように宣言されたプロパティがあります。
@property (nonatomic, assign) dispatch_queue_t queue;
次に、私のinitメソッドで次のことを行います。
- (id)initWithServerUrls: (NSString*)serverUrls
{
if (self = [super init])
{
_queue = dispatch_queue_create("com.xxx.my_send_queue", DISPATCH_QUEUE_SERIAL);
}
return self;
}
Xcode 4.4.1では、それは機能し、問題を引き起こしませんでした(アプリは+アプリストアでテストされました)。Xcode 4.5にアップグレードした後、アプリがEXC_BAD_ACCESSでクラッシュし、Xcodeがその行に次のような警告を表示します。
保持されたオブジェクトをunsafe_unretained変数に割り当てます。オブジェクトは割り当て後に解放されます
AppleはXcode4.5のコンパイラをLLVM4.0からLLVM4.1に更新しましたが、コードが現在クラッシュしている理由がわかりません。
コードをステップスルーすると、その行の直後にクラッシュが発生します。何が間違っている可能性があり、どうすれば修正できますか?
解決:
両方のSDKで動作させることができました。追加しました:
#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
誰かがそれが役に立つと思うことを願っています