Ich habe einen seltsamen Fehler in meinem eigenen Programm. Ich arbeite gerade an der Videobearbeitungs-App. Ich habe einen SongPicker-View-Controller, der alle Songs aus der Musik-App des Benutzers anzeigt. Wenn der Benutzer ein Lied auswählt, wird ein neues Objekt (MediaAsset) erzeugt, das dieses Lied darstellt. Es funktionierte perfekt, als SongPicker in Swift und MediaAsset in Objective-C geschrieben wurde. Allerdings habe ich MediaAsset komplett auf Swift umgeschrieben und jetzt jedes Mal, wenn ich versuche, ein neues MediaAsset von SongPicker zu erstellen, wirft Xcode EXC_BREAKPOINT (code = 1, subcode = ...) und meine App bricht ab.Xcode EXC_BREAKPOINT (Code = 1, Subcode = ...) beim Drucken von URL
Hier ist der Code, dass aufgerufen wird, wenn User-Song auswählt:
private let mediaItems = MPMediaQuery.songsQuery().items as [MPMediaItem]
func tableView(tableView: UITableView, didSelectRowAtIndexPath indexPath: NSIndexPath){
let item = filteredMediaItems[indexPath.row]
println("didSelectRowAtIndexPath")
println("item: \(item), url: \(item.assetURL.absoluteString)")
delegate?.songPickerViewController(self, didPickedAsset: MediaAsset(url: item.assetURL, type: .Audio))
}
Es auf der Konsole tatsächlich erzeugt: zu MediaAsset Konstruktor
didSelectRowAtIndexPath
item: <MPConcreteMediaItem: 0x174648340> 2369259457983598523, url: Optional("ipod-library://item/item.mp3?id=2369259457983598523")
dann geht es weiter, die wie folgt aussieht:
init(url: NSURL, type: MediaAssetType){
println("new MediaAsset with url \(url.absoluteString)")
self.url = url
self.asset = AVURLAsset(URL: url, options: [AVURLAssetPreferPreciseDurationAndTimingKey: true])
self.timeRange = CMTimeRangeMake(kCMTimeZero, self.asset.duration)
self.initialRate = CGFloat(max(self.asset.videoTrack!.nominalFrameRate/30.0, 1.0))
self.rate = self.initialRate
self.type = type
}
druckt es auf Konsole:
new MediaAsset with url Optional("ipod-library://item/item.mp3?id=2369259457983598523")
Und auf dieser Linie zerquetscht es:
Der Code, der Vermögenswert von AVURLAsset schafft genau das gleiche ist, wie es in meiner alten ObjectiveC Klasse war (wo es sehr gut gearbeitet hat), so dass das Problem shouldn gehören nicht zu AVFoundation. Weiß jemand, was der Grund für diesen Schwarm sein kann? ? Und wie allgemeinere Frage, in welchen Fällen "EXC_BREAKPOINT (code = 1, ..." entsteht
EDIT Nach dieser println Anweisung löschen, meine App noch zerdrückt, aber jetzt zeigt diesen Assembler-Code:
Haben Sie Ausnahme-Breakpoints aktiviert? Wenn Sie sie deaktivieren, besteht das Problem weiterhin? –
Ich habe Ausnahme-Breakpoints deaktiviert –
Welche Breakpoints haben Sie aktiviert? –