2012-04-10 43 views
2

我試圖將此barcode source code by Stefanhafeneger包含到我的項目中。我用一個簡單的相機例子和條形碼引擎開始了它,對於第一個條形碼解碼,一切正常。當我第二次嘗試時,我收到了EXC_BAD_ACCESS。它只會在應用程序崩潰後運行一次。XCode - EXC_BAD_ACCESS。 - [不是類型保留]

Here is a screen recording of how the appilcation crash.

我與從谷歌在我appilcation這個DataMatrix標籤測試。

UfoDesign DataMatrix

我是衝浪爲幾天的解決方案,我曾試圖NSZombieEnabled,並用儀器進行調試,但是我仍然有它沒有運氣。下面的圖片是來自xcode的錯誤。

*** -[Not A Type retain]: message sent to deallocated instance 0x7b21ed0 

debugging1 debugging2

爲了您的信息,這是一個ARC啓用的項目。有人請幫忙,我還是幾個月大的初學者。

這裏是這個項目我的Xcode文件Barcode-Datamatrix Project

更新:我也試圖通過使用鏈接標誌-fno-objC弧,但結果還是一樣禁用ARC每一個與該庫文件。除了我嘗試imageView.image = [UIImage imageWithCGImage:image.CGImage];或複製imageView.image = [image copy];應用程序仍崩潰在同一個地方。

非常感謝 健

+0

我從來沒有見過「不是類型」之前...你能確認你使用的庫支持ARC嗎?看來,通過委託方法的圖像在到達該線時已經被釋放。 – borrrden 2012-04-10 00:54:48

+0

我不確定圖書館。由於我的項目啓用了ARC,因此我從庫中刪除了所有發佈,保留,自動釋放功能。在選定的文件中禁用ARC是不可能的? – Kin 2012-04-10 02:04:59

+0

這絕對是可能的http://stackoverflow.com/questions/6646052/how-can-i-disable-arc-for-a-single-file-in-a-project此外,只需刪除所有保留和發佈沒有檢查邏輯不是一個好主意。 ARC可能會過早發佈。 – borrrden 2012-04-10 02:15:03

回答

1

[Not A Type retain]表示要傳遞的對象不是一個UIImage到的UIImageView的圖像屬性,則該方法嘗試辨別它的類型來發送保留在imagevVew.image = image線。它的NSLog的類型與NSLog("%@", NSStringFromClass([image class]));

編輯:我請勿建議你轉換這樣一個老項目,ARC(我引述:「這是對的iOS 2.1鏈接」)。使用鏈接器標誌-fno-objC-arc併爲與該項目相關的每個文件禁用ARC。之後,檢查您的imageView是否不時髦,嘗試將圖像設置爲零,或者完全刪除該行並運行。

+0

感謝您的回覆,我試過NSLog(「%@」,NSStringFromClass([image class]));我在崩潰前從控制檯收到UIImage類型。這意味着它將UIImage發送到UIImageView。 – Kin 2012-04-10 02:08:13

+1

你是以任何方式橋接它的類型? – CodaFi 2012-04-10 03:30:05

1

BarCode Engine可能不會啓用ARC。

禁用未設計爲ARC的支持,我們可以告訴編譯器的一些文件讓它成爲ARC禁用通過這個命令

-fno-objc-arc 

把這個命令在項目建設階段,其中存在的所有編譯源(即您的項目名稱中的所有類都將顯示)

ZBarSDK相當簡單易用且功能更強大的API用於此條形碼qr碼解碼。

+0

我曾嘗試使用-fno-objc-arc,但它不起作用。我之前嘗試過ZBarSDK,這很容易,但它不支持DataMatrix。 – Kin 2012-04-10 06:09:12

+0

清除你的項目重新啓動你的Xcode可能會工作:) – dayitv89 2012-04-10 06:17:20