升級到iOS 5的設備,現在應用程序崩潰。堅果... 這是一個相機應用程序。錄製視頻。我有一個playMovie
程序來播放捕獲的視頻。該功能需要使用指向視頻文件的路徑(NSString
)創建NSURL
。但NSURL
創建與exc_bad_access
崩潰。 2晚試圖解決這個問題,沒有運氣。開始懷疑問題是xcode 3.2.5的舊版本。 這裏的片段......僅在IOS5上創建NSURL崩潰
- (void) imagePickerController:(UIImagePickerController *)picker didFinishPickingMediaWithInfo:(NSDictionary *)info
{
/// after I verify that file type is movie ....
videoFilePath = [[info objectForKey:UIImagePickerControllerMediaURL] path];
NSURL *url = [NSURL fileURLWithPath:videoFilePath];
... at this point the app crashes.
ALREADY嘗試:
- 移動NSURL
從創作PROC的playMovie內didFinishPickingMediaWithInfo
(如上圖所示)。仍然崩潰。
- 添加isDirectory:NO
]。仍然崩潰。
- 打印日誌路徑字符串路徑看起來很好(它不是空的或覆蓋)
- 註釋掉NSURL
並只保存MOV文件而不玩它。工作正常。但我需要該網址才能播放電影。
設備日誌:
異常類型:EXC_BAD_ACCESS (SIGSEGV)
異常代碼:KERN_INVALID_ADDRESS at 0x10000010
控制檯消息:
數據格式化暫時不可用,以後會重新嘗試「繼續」。 (找不到dlopen的功能,所以它是不可能載入共享庫。)
---增加更多的細節(12年8月30日)---
videoFilePath
在聲明的NSString
我viewController.h
。它有@property (retain,nonatomic)
,它是合成的。它不在任何地方分配,所以它被用作常量。上面的代碼片斷顯示媒體網址如何分配給videoFilePath
(作爲常量,未分配)。
在此之後,我爲用戶打開UIActionSheet
「播放電影」,或「保存電影」或「取消」(有一天會添加Youtube選項)。在操作表中,如果用戶選擇PlayMovie
,我會調用(void)playMovie過程。在那個過程中,我聲明瞭使用存儲在videoFilePath
中的路徑啓動它的* url對象。像一個魅力工作,直到升級到IOS 5. 我只是試圖在(void)viewDidLoad
裏面預分配NSString
videoFilePath
,以便它使用分配而不是常量。但是這並沒有解決它。
我只是試着將XCODE升級到4.2。我不再收到msg「數據格式化程序暫時不可用」。但仍然與EXC_BAD_ACCESS
崩潰。
謝謝!謝謝!謝謝!
您能向我們展示如何保存videoFilePath及其發生崩潰時的值 – ahmad
在上面添加了詳細信息。謝謝。 – CodePig