将设备升级到 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
在我的viewController.h
. 有@property (retain,nonatomic)
,而且是合成的。它不会在任何地方分配,因此它被用作常量。上面的代码片段显示了媒体 url 是如何分配的videoFilePath
(作为一个常量,而不是分配的)。
在此之后,我为用户打开一个UIActionSheet
“播放电影”、“保存电影”或“取消”(有一天会添加 Youtube 选项)。在操作表中,如果用户选择PlayMovie
我调用 (void)playMovie 过程。在该过程中,我声明 *url 对象使用存储在videoFilePath
. 在升级到 IOS 5 之前,它就像一个魅力一样工作。我只是尝试预先分配NSString
videoFilePath
内部(void)viewDidLoad
,以便它使用分配而不是常量。但这并没有解决它。
我刚刚尝试将 XCODE 升级到 4.2。我不再收到消息“数据格式化程序暂时不可用”。但仍然与EXC_BAD_ACCESS
.
谢谢!谢谢!谢谢!