デバイスを iOS 5 にアップグレードしたところ、アプリがクラッシュしました。ナッツ... カメラアプリです。ビデオを記録します。playMovie
キャプチャしたビデオを再生する手順があります。その関数は、ビデオ ファイルを指すNSURL
パス ( ) を使用してを作成する必要があります。NSString
しかし、NSURL
作成は でクラッシュしexc_bad_access
ます。これを解決しようとして2泊しましたが、うまくいきません。問題が古いバージョンの xcode 3.2.5 であると疑い始めています。これがスニペットです...
- (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.
すでに試しました:
-NSURL
作成を playMovie proc から内部に移動しますdidFinishPickingMediaWithInfo
(上記のように)。それでもクラッシュします。
- 追加isDirectory:NO
]。まだクラッシュします。
- パス文字列をログに出力します... パスは問題ないようです (空でも上書きでもありません)
- をコメントアウトしNSURL
、MOV ファイルを再生せずに保存します。正常に動作します。しかし、映画を再生するには URL が必要です。
デバイス ログ:
例外の種類: EXC_BAD_ACCESS (SIGSEGV)
例外コード:KERN_INVALID_ADDRESS at 0x10000010
コンソール メッセージ:
データ フォーマッターは一時的に利用できません。「続行」後に再試行します。(dlopen 関数が見つからないため、共有ライブラリをロードできません。)
--- 詳細を追加 (8/30/12) ---
videoFilePath
はNSString
my で宣言されていviewController.h
ます。があり@property (retain,nonatomic)
、合成されています。どこにも割り当てられていないため、定数として使用されます。上記の抜粋されたコードは、メディア URL がどのように割り当てられるかを示していますvideoFilePath
(割り当てではなく定数として)。
この後UIActionSheet
、ユーザーが「ムービーを再生」、「ムービーを保存」、または「キャンセル」するためのページを開きます (いつか YouTube オプションが追加される予定です)。アクションシートで、ユーザーが選択した場合、PlayMovie
(void)playMovie プロシージャを呼び出します。その手順では、*url オブジェクトを宣言し、.xml に格納されているパスで開始しvideoFilePath
ます。IOS 5 にアップグレードするまでは魅力的に機能しましNSString
videoFilePath
た(void)viewDidLoad
。しかし、それは解決しませんでした。
XCODEを4.2にアップグレードしてみました。「データ フォーマッターが一時的に利用できません」というメッセージが表示されなくなりました。しかし、それでもクラッシュしEXC_BAD_ACCESS
ます。
ありがとう!ありがとう!ありがとう!