我有2个项目使用谷歌地图sdk,他们目前在Appstore.
要记住的事情:
今天我像往常一样在第一个项目中打开Xcode,尝试在iPhone上进行编译和调试,我有时会EXC_BAD_ACCESS (code=1...)在应用程序上崩溃,有时会得到EXC_BAD_ACCESS (code=EXC_ARM_DA_ALING...),这里没有堆栈跟踪,但总是在main.m上:
return UIApplicationMain(argc, argv, nil, NSStringFromClass([TGPAppDelegate class]));
Run Code Online (Sandbox Code Playgroud)
看到第一个线程我发现这是错误与谷歌地图有关:

尝试以下方法:
奇怪的是我也是:
这两个项目都处于早期测试状态,所以我不知道是否有任何真正的用户有这个问题,但我担心有些用户因此而无法使用这些应用程序.
我在互联网上找不到太多的信息,我甚至不知道在哪里看,是否有任何关于此问题的已知错误?,其他任何人都有同样的问题?
这是我正在使用的示例代码:
-(void)viewDidLoad {
[super viewDidLoad];
GMSCameraPosition *camera = [GMSCameraPosition cameraWithLatitude:37.80948
longitude:5.965699
zoom:2];
GMSMapView *mapView = [GMSMapView mapWithFrame:CGRectZero camera:camera];
self.view = mapView;
}
Run Code Online (Sandbox Code Playgroud)
编辑1:
做更多的测试,发现只有在调试时才会出现问题(在运行应用程序时连接调试器),如果你从iPhone运行应用程序,然后将调试器连接到进程,一切运行正常,我的意思是,如果当附加调试器时,地图会尝试渲染然后你会得到exc_bad_access,然后是调试器错误吗?我很困惑
编辑2:
我正在开发一个视频应用程序,我们正在将常规 mp4 文件更改为 HLS,我们必须进行更改的众多原因之一是我们对视频的带宽使用有更多的控制(我们加载许多其他内容)在我们的播放器中,因此我们需要以最佳方式优化体验)。
因此,AVFoundation在 iOS10 中引入了使用以下方法控制带宽的功能:
AVPlayerItem *playerItem = [AVPlayerItem playerItemWithAsset:self.urlAsset];
playerItem.preferredForwardBufferDuration = 30.0;
playerItem.preferredPeakBitRate = 200000.0; // Remember this line
Run Code Online (Sandbox Code Playgroud)
iOS11上还引入了一个配置来设置项目的最大分辨率preferredMaximumResolution,所以我们正在使用它,但我们仍然需要针对iOS10设备的解决方案。
好吧,现在我们可以控制了,这preferredPeakBitRate很好,但我们有一个问题,并非所有 HLS 源都是由我们生成的,所以,假设我们希望在未连接到 wifi 网络时将最大分辨率设置为 480p ,今天我没有办法实现这一点,并不总是我能够知道所选 480p 源需要多少带宽HLS playlist。
我正在考虑的一件事是阅读文件内的信息m3u8,至少知道我的播放器可以显示哪些不同质量的源以及每个人需要多少带宽。
一种方法是将m3u8播放列表下载为纯文本,使用正则表达式读取文件并处理这些数据,好吧,我试图避免这种情况,我认为这应该不那么困难。
我无法从曲目中读取此信息,因为 a)我找不到信息,b)更改质量时会动态替换曲目,是的,每个质量级别都有 1 个曲目。
所以,我不知道如何获取这些信息,我搜索了google,stackoverflow,但找不到这些信息,有人可以帮助我吗?
这是我想做的一个例子,我有这个示例播放列表:
#EXTM3U
#EXT-X-STREAM-INF:PROGRAM-ID=1,BANDWIDTH=314000,RESOLUTION=228x128,CODECS="mp4a.40.2"
test-hls-1-16a709300abeb08713a5cada91ab864e_hls_duplex_192k.m3u8
#EXT-X-STREAM-INF:PROGRAM-ID=1,BANDWIDTH=478000,RESOLUTION=400x224,CODECS="avc1.42001e,mp4a.40.2"
test-hls-1-16a709300abeb08713a5cada91ab864e_hls_duplex_400k.m3u8
#EXT-X-STREAM-INF:PROGRAM-ID=1,BANDWIDTH=691000,RESOLUTION=480x270,CODECS="avc1.42001e,mp4a.40.2"
test-hls-1-16a709300abeb08713a5cada91ab864e_hls_duplex_600k.m3u8
#EXT-X-STREAM-INF:PROGRAM-ID=1,BANDWIDTH=1120000,RESOLUTION=640x360,CODECS="avc1.4d001f,mp4a.40.2"
test-hls-1-16a709300abeb08713a5cada91ab864e_hls_duplex_1000k.m3u8
#EXT-X-STREAM-INF:PROGRAM-ID=1,BANDWIDTH=1661000,RESOLUTION=960x540,CODECS="avc1.4d001f,mp4a.40.2"
test-hls-1-16a709300abeb08713a5cada91ab864e_hls_duplex_1500k.m3u8
Run Code Online (Sandbox Code Playgroud)
我只想在我的代码中的数组上提供这些信息,如下所示:
NSArray<ZZMetadata *> *metadataArray = self.urlAsset.bandwidthMetadata;
NSLog(@"Metadata info: %@", metadataArray);
Run Code Online (Sandbox Code Playgroud)
并打印如下内容:
<__NSArrayM 0x123456789> (
<ZZMetadata 0x234567890> …Run Code Online (Sandbox Code Playgroud) 我是Android开发人员的新手,所以我使用ActiveAndroid来管理数据库,我在使用带有Date变量的查询时遇到了麻烦,我有:
From fromQuery = new Select().from(Shift.class);
//It doesn't matter what currentShiftDates do.
CurrentShiftDates currentShiftDates = new CurrentShiftDates();
fromQuery = fromQuery.where("startDate > ? and startDate < ?",currentShiftDates.startDate,
currentShiftDates.endDate);
return fromQuery.execute();
Run Code Online (Sandbox Code Playgroud)
我已经读过查询需要将参数作为long值传递,所以我尝试使用.getTime():
fromQuery = fromQuery.where("startDate > ? and startDate < ?",currentShiftDates.startDate.getTime(), currentShiftDates.endDate.getTime());
Run Code Online (Sandbox Code Playgroud)
但它仍然无效.
我做错了什么?
ios ×2
android ×1
avfoundation ×1
avurlasset ×1
date ×1
iphone ×1
java ×1
m3u8 ×1
objective-c ×1
time ×1
xcode ×1