以NSException类型的未捕获异常终止错误

时间:2016-02-06 15:52:33

标签: swift unrecognized-selector

我有一个简单的应用程序,其中2 mp4正在循环播放。一旦mp4结束,应用程序崩溃,我收到此错误:

  

"以NSException"

类型的未捕获异常终止

这是我的代码。错误是什么意思,我该如何解决?

let videoURL: NSURL = NSBundle.mainBundle().URLForResource(instrumentaimp4[skaicius], withExtension: "mp4")!
    let sakeleURL: NSURL = NSBundle.mainBundle().URLForResource("sakele_blikas", withExtension: "mp4")!


    player = AVPlayer(URL: videoURL)
    player?.actionAtItemEnd = .None
    player?.muted = true

    player2 = AVPlayer(URL: sakeleURL)
    player2?.actionAtItemEnd = .None
    player2?.muted = true

    let playerLayer = AVPlayerLayer(player: player)
    playerLayer.videoGravity = AVLayerVideoGravityResizeAspectFill
    playerLayer.zPosition = -1

    let playerLayer2 = AVPlayerLayer(player: player2)
    playerLayer2.videoGravity = AVLayerVideoGravityResizeAspectFill
    playerLayer2.zPosition = -1



    playerLayer.frame = CGRect(x: 50.0, y: 100.0, width: 240.0, height: 433.0)
    playerLayer2.frame = CGRect(x:647.0, y: 90.0, width: 115.0, height: 44.0)

    view.layer.addSublayer(playerLayer)
    view.layer.addSublayer(playerLayer2)
    player?.play()
    player2?.play()

    //loop video
    NSNotificationCenter.defaultCenter().addObserver(self,
        selector: "loopVideo",
        name: AVPlayerItemDidPlayToEndTimeNotification,
        object:nil)




}


func loopVideo(notification: NSNotification) {

    if let finishedPlayer = notification.object as! AVPlayer!
    {
        if finishedPlayer == self.player2
        {
            self.player2?.seekToTime(kCMTimeZero)
            self.player2?.play()
        } else {
            self.player?.seekToTime(kCMTimeZero)
            self.player?.play()
        }
    }
}
2016-02-06 19:33:41.874 Lietava 2[1214:107001] -[Lietava_2.display loopVideo]: unrecognized selector sent to instance 0x79a44b60
2016-02-06 19:33:41.879 Lietava 2[1214:107001] *** Terminating app due to uncaught exception 'NSInvalidArgumentException', reason: '-[Lietava_2.display loopVideo]: unrecognized selector sent to instance 0x79a44b60'
*** First throw call stack:
(
    0   CoreFoundation                      0x00582a14 __exceptionPreprocess + 180
    1   libobjc.A.dylib                     0x02735e02 objc_exception_throw + 50
    2   CoreFoundation                      0x0058bd63 -[NSObject(NSObject) doesNotRecognizeSelector:] + 275
    3   CoreFoundation                      0x004c96bd ___forwarding___ + 1037
    4   CoreFoundation                      0x004c928e _CF_forwarding_prep_0 + 14
    5   Foundation                          0x00adaa76 __57-[NSNotificationCenter addObserver:selector:name:object:]_block_invoke_2 + 40
    6   CoreFoundation                      0x0054a5f4 __CFNOTIFICATIONCENTER_IS_CALLING_OUT_TO_AN_OBSERVER__ + 20
    7   CoreFoundation                      0x0054a2aa _CFXRegistrationPost + 458
    8   CoreFoundation                      0x00549ff6 ___CFXNotificationPost_block_invoke + 54
    9   CoreFoundation                      0x005963d3 -[_CFXNotificationRegistrar find:object:observer:enumerator:] + 1795
    10  CoreFoundation                      0x00430667 _CFXNotificationPost + 599
    11  Foundation                          0x00a14b87 -[NSNotificationCenter postNotification:] + 131
    12  AVFoundation                        0x001dec85 __avplayeritem_fpItemNotificationCallback_block_invoke + 6034
    13  libdispatch.dylib                   0x03178377 _dispatch_call_block_and_release + 15
    14  libdispatch.dylib                   0x0319b9cd _dispatch_client_callout + 14
    15  libdispatch.dylib                   0x03180f90 _dispatch_main_queue_callback_4CF + 910
    16  CoreFoundation                      0x004d3fde __CFRUNLOOP_IS_SERVICING_THE_MAIN_DISPATCH_QUEUE__ + 14
    17  CoreFoundation                      0x00491cd4 __CFRunLoopRun + 2356
    18  CoreFoundation                      0x004910e6 CFRunLoopRunSpecific + 470
    19  CoreFoundation                      0x00490efb CFRunLoopRunInMode + 123
    20  GraphicsServices                    0x04ce4664 GSEventRunModal + 192
    21  GraphicsServices                    0x04ce44a1 GSEventRun + 104
    22  UIKit                               0x01265bfa UIApplicationMain + 160
    23  Lietava 2                           0x0009ef0c main + 140
    24  libdyld.dylib                       0x031c5a21 start + 1
)
libc++abi.dylib: terminating with uncaught exception of type NSException
(lldb) 

1 个答案:

答案 0 :(得分:0)

你写的例外, 更改为此代码:

 NSNotificationCenter.defaultCenter().addObserver(self,
        selector: "loopVideo:", //added : <---
        name: AVPlayerItemDidPlayToEndTimeNotification,
        object:nil)
带有selector的{​​{1}}表示该函数应该接收参数 在您的情况下,通知中心搜索了没有采取任何参数的方法loopVideo

相关问题