1
我正在使用適用於iOS的Windows Azure SDK將二進制文件上載到Azure Blob存儲。一切都在調試工作正常,當構建直接複製到手機上,但是當它運行在通過TestFlight發出了即席構建,我得到這個異常:NSData dataWithBytesNoCopy返回錯誤的類型?
NSInvalidArgumentException: -[__NSCFConstantString dataWithBase64DecodedString]: unrecognized selector sent to instance
現在在Azure SDK定義dataWithBase64DecodedString在一個類別在NSData的,而在這個代碼塊中出現異常:
void* buffer=malloc(CC_SHA256_DIGEST_LENGTH);
CCHmac(kCCHmacAlgSHA256, [cKey bytes], [cKey length], [contentData bytes], [contentData length], buffer);
NSData *encodedData = [NSData dataWithBytesNoCopy:buffer length:CC_SHA256_DIGEST_LENGTH freeWhenDone:NO];
contentMD5 = [encodedData stringWithBase64EncodedData]; /* exception is on this line */
free(buffer);
正如你所看到的,encodedData應該是一個NSData。有時候是這樣。但是,一旦編譯完成並在手機上遠離我的調試器,就不是那麼多。 Airbrake匹配從手機中拉出的故障記錄。
任何想法?
我猜想當它出於某種原因失敗時使用的構建配置與azure SDK框架 – 2013-02-25 20:27:57
沒有正確鏈接,事實證明你是正確的......將-ObjC -load_all標誌添加到鏈接器中修復了它。他們在調試但不是Release.if你添加這個作爲答案,我會接受! – 2013-02-26 01:46:45
不錯,我已經添加了一個答案和一些更多的細節(如果我在某些方面不正確,評論)。另外我假設你的意思是'-all_load'而不是'-load_all'? – 2013-02-26 17:29:52