我在iPhone 5和4s上测试了我的应用程序.然后我将我的应用程序发送给测试人员,他有5s iPhone.一切都很好.一段时间后,当我向应用程序添加一些功能时,我向他发送了另一个版本,但现在他说它在发布时崩溃了.在我的设备上一切正常.我让他给我发送崩溃报告.这是.ips文件:
{"bundleID”:"name.my-app","app_name”:”my-app","bug_type":"109","name”:”my-app","os_version":"iPhone OS 7.1 (11D167)","version":"1.0 (1.0)"}
Incident Identifier: 3916. . .194
CrashReporter Key: 58fd. . .7399
Hardware Model: iPhone6,2
Process: my-app [277]
Path: /var/mobile/Applications/0AB0. . .B5B/my-app.app/my-app
Identifier: name.my-app
Version: 1.0 (1.0)
Code Type: ARM-64 (Native)
Parent Process: launchd [1]
Date/Time: 2014-03-27 02:10:39.959 +0400
OS Version: iOS 7.1 (11D167)
Report Version: 104
Exception Type: EXC_CRASH (SIGABRT)
Exception Codes: 0x0000000000000000, 0x0000000000000000
Triggered by Thread: 24
Last Exception Backtrace:
(0x1893e2950 0x1958e81fc 0x1893e2890 0x1000f09a0 0x195ec0014 0x195ebffd4 0x195ec64a8 0x195ec24c0 0x195ec70f4 0x195ec74fc 0x1960556bc 0x19605554c) …
Run Code Online (Sandbox Code Playgroud) 当AVPlayer播放来自网络流的资源时,它会在到达下载内容的末尾时暂停.
所以,我的问题是,如何知道它因网络不良而停止了?如何在下载之后播放它,比方说,下一个10秒的资产?
我正在尝试从URL播放流,但这是一个问题.ObserveValueForKeyPath:ofObject:change:context只是不执行.据我了解,这不取决于streamURL,它是否正确.它必须从AVPlayerItemStatusUnknown将状态更改为AVPlayerItemStatusReadyToPlay或AVPlayerItemStatusFailed.但是,我在浏览器中检查了该URL,它运行正常.所以有什么问题?我观看了WWDC视频,它说,如果你有音频流,请在 AVAsset 之前使用AVPLayerItem.
这是我的代码:
- (void) prepare
{
NSURL * trackStreamURL = [NSURL URLWithString:streamURL];
NSLog(@"STREAM URL: %@",trackStreamURL);
_playerItem = [AVPlayerItem playerItemWithURL:trackStreamURL];
[_playerItem addObserver:self forKeyPath:@"status" options:0 context:nil];
}
- (void) observeValueForKeyPath:(NSString *)keyPath ofObject:(id)object change:(NSDictionary *)change context:(void *)context
{
NSLog(@"KEY PATH : %@", keyPath);
NSLog(@"CHANGE : %@", change);
}
Run Code Online (Sandbox Code Playgroud)
提前致谢!
我试图从pr找到多项式的值.这是我的代码:
let x = Double(pr)
let x2 : Double = pow(x, 2.0)
let x3 : Double = pow(x, 3.0)
let x4 : Double = pow(x, 4.0)
let r = CGFloat( 4.8 * x4 - 10.4 * x3 + 5.7 * x2 + 1.05 * x + 0.95 )
let g = CGFloat( 4.8 * x4 - 8.8 * x3 + 3.3 * x2 + 1.65 * x + 0.0 )
let b = CGFloat(0.0)
let color = UIColor(red: r, green: …
Run Code Online (Sandbox Code Playgroud) 这是我正在尝试做的事情:
extension Array<Optional<T>> {
func unwrap() -> Optional<Array<T>> {
let a = self.flatMap() { a in
switch a {
case Optional.Some(let x): return [x]
case Optional.None: return []
}
}
if a.count == self.count {
return Optional.Some(a)
} else {
return Optional.None
}
}
}
Run Code Online (Sandbox Code Playgroud)
但是,它没有编译错误Use of undeclared type T
.这是我想要使用它的方式:
let a = [Optional.Some(2), Optional.Some(3), Optional.Some(4)]
let b = [Optional.Some(1), Optional.None]
a.unwrap() // Optional[2, 3, 4]
b.unwrap() // nil
Run Code Online (Sandbox Code Playgroud)
我怎么能解决这个问题呢?或者快速没有这种可能性?
我\xe2\x80\x99m 崩溃了,我可以\xe2\x80\x99t 找出导致它的原因。这是我从崩溃报告中得到的信息:
\n\nException Type: EXC_BAD_ACCESS (SIGSEGV)\nException Subtype: KERN_INVALID_ADDRESS at 0x0000000c\nTriggered by Thread: 0\n\nThread 0 Crashed:\n0 AVFoundation 0x2f271946 -[AVPlayerPeriodicCaller _effectiveRateChanged] + 418\n1 AVFoundation 0x2f270fc8 __43-[AVPlayerTimelyCaller _timebaseDidChange:]_block_invoke + 232\n2 libdispatch.dylib 0x3b04ed50 _dispatch_call_block_and_release + 8\n3 libdispatch.dylib 0x3b04ed3c _dispatch_client_callout + 20\n4 libdispatch.dylib 0x3b0516be _dispatch_main_queue_callback_4CF + 274\n5 CoreFoundation 0x3039b674 __CFRUNLOOP_IS_SERVICING_THE_MAIN_DISPATCH_QUEUE__ + 4\n6 CoreFoundation 0x30399f40 __CFRunLoopRun + 1304\n7 CoreFoundation 0x303047a4 CFRunLoopRunSpecific + 520\n8 CoreFoundation 0x30304586 CFRunLoopRunInMode + 102\n9 GraphicsServices 0x352716ce GSEventRunModal + 134\n10 UIKit 0x32c6388c UIApplicationMain + 1132\n11 my-app 0x00029dd4 main (main.m:16)\n12 libdyld.dylib 0x3b063ab4 …
Run Code Online (Sandbox Code Playgroud) 我有一个脚本,如果它在 tty 上,它会打印彩色输出。一堆并行执行,所以我不能把他们的标准输出到 tty。我也无法控制脚本代码(强制着色),所以我想通过 pty.txt 伪造它。我的代码:
invocation = get_invocation()
master, slave = pty.openpty()
subprocess.call(invocation, stdout=slave)
print string_from_fd(master)
Run Code Online (Sandbox Code Playgroud)
我想不通,应该在string_from_fd
. 现在,我有类似的东西
def string_from_fd(fd):
return os.read(fd, 1000)
Run Code Online (Sandbox Code Playgroud)
它有效,但这个数字1000
看起来很奇怪。我认为输出可以很大,任何数量都可能不够。我从堆栈溢出中尝试了很多解决方案,但没有一个有效(它不打印任何内容或永远挂起)。
我对文件描述符和所有这些都不是很熟悉,所以如果我做错了什么,我将不胜感激。
谢谢!
ios ×4
avfoundation ×3
swift ×2
arrays ×1
avplayer ×1
generics ×1
objective-c ×1
optional ×1
pty ×1
python ×1
streaming ×1
subprocess ×1
swift2 ×1