Build Information
Successful build of AVPlayerWrapper, reference master (e8f530), with Swift 6.4 for macOS (SPM) on 26 Sep 2026 17:53:27 UTC.
Swift 6 data race errors: 0
Build Command
env DEVELOPER_DIR=/Applications/Xcode-27.0.0-Release.Candidate.app xcrun swift build --arch arm64Build Log
========================================
RunAll
========================================
Builder version: 5.1.0
Interrupt handler set up.
========================================
Checkout
========================================
Clone URL: https://github.com/moslienko/AVPlayerWrapper.git
Reference: master
Initialized empty Git repository in /Users/admin/builder/spi-builder-workspace/.git/
From https://github.com/moslienko/AVPlayerWrapper
* branch master -> FETCH_HEAD
* [new branch] master -> origin/master
HEAD is now at e8f5302 Merge pull request #3 from moslienko/develop
Cloned https://github.com/moslienko/AVPlayerWrapper.git
Revision (git rev-parse @):
e8f53021bc0de2a9bc56c4bb26ae9957186c7f9c
SUCCESS checkout https://github.com/moslienko/AVPlayerWrapper.git at master
========================================
Build
========================================
Selected platform: macosSpm
Swift version: 6.4
Building package at path: $PWD
https://github.com/moslienko/AVPlayerWrapper.git
Running build ...
env DEVELOPER_DIR=/Applications/Xcode-27.0.0-Release.Candidate.app xcrun swift build --arch arm64
Building for debugging...
[Pre-planning 1 / 96]
[Planning deferred tasks]
[25 / 42]
[26 / 43] AppViewUtilits
[36 / 136]
[40 / 136]
[48 / 136]
[50 / 136]
[51 / 136]
[56 / 136]
[59 / 136]
[63 / 136]
[69 / 136]
[73 / 136]
[75 / 136]
[76 / 136]
[87 / 136]
[93 / 136]
[94 / 136]
[98 / 136]
[103 / 136]
[104 / 136]
[108 / 136]
[119 / 136] AppViewUtilits
[120 / 136] AppViewUtilits
[126 / 137]
[128 / 150]
[130 / 150] AVPlayerWrapper
[131 / 150] AVPlayerWrapper
[142 / 150] AVPlayerWrapper-product
[145 / 150]
[145 / 150] AVPlayerWrapper
[145 / 150] AppViewUtilits
[149 / 150] AVPlayerWrapper
Build complete! (11.60 sec)
Fetching https://github.com/moslienko/AppViewUtilits.git
[1/877] Fetching appviewutilits
Fetched https://github.com/moslienko/AppViewUtilits.git (1.99s)
Computing version for https://github.com/moslienko/AppViewUtilits.git
Computed https://github.com/moslienko/AppViewUtilits.git at 1.3.1 (4.76s)
Creating working copy for https://github.com/moslienko/AppViewUtilits.git
Working copy of https://github.com/moslienko/AppViewUtilits.git resolved at 1.3.1
/Users/admin/builder/spi-builder-workspace/Sources/AVPlayerWrapper/Extensions/Extension+Bundle.swift:15:5: [1;33mwarning: [1;39m'public' modifier is redundant for instance method declared in a public extension[0;0m
[0;36m13 |[0;0m /// - Parameter fileName: The name of the resource file.
[0;36m14 |[0;0m /// - Returns: An optional `URL` pointing to the resource file.
[0;36m15 |[0;0m public func createFileUrl(forResource fileName: String) -> URL? {
[0;36m|[0;0m `- [1;33mwarning: [1;39m'public' modifier is redundant for instance method declared in a public extension[0;0m
[0;36m16 |[0;0m let components = fileName.split(separator: ".", maxSplits: 1).map(String.init)
[0;36m17 |[0;0m guard components.count == 2 else {
/Users/admin/builder/spi-builder-workspace/Sources/AVPlayerWrapper/Service/AVPlayerAutoStopService.swift:74:5: [1;33mwarning: [1;39m'public' modifier is redundant for instance method declared in a public extension[0;0m
[0;36m72 |[0;0m /// Sets up the auto stop playing with the specified type.
[0;36m73 |[0;0m /// - Parameter type: The type of auto-stop to be set.
[0;36m74 |[0;0m public func setupAutoStop(with type: AVPlayerAutoStopType) {
[0;36m|[0;0m `- [1;33mwarning: [1;39m'public' modifier is redundant for instance method declared in a public extension[0;0m
[0;36m75 |[0;0m self.autoStopType = type
[0;36m76 |[0;0m switch type {
/Users/admin/builder/spi-builder-workspace/Sources/AVPlayerWrapper/Service/AVPlayerAutoStopService.swift:87:5: [1;33mwarning: [1;39m'public' modifier is redundant for instance method declared in a public extension[0;0m
[0;36m85 |[0;0m
[0;36m86 |[0;0m /// Try starts the auto-stop player timer, if needed.
[0;36m87 |[0;0m public func startTimer() {
[0;36m|[0;0m `- [1;33mwarning: [1;39m'public' modifier is redundant for instance method declared in a public extension[0;0m
[0;36m88 |[0;0m switch self.autoStopType {
[0;36m89 |[0;0m case .disable:
/Users/admin/builder/spi-builder-workspace/Sources/AVPlayerWrapper/Service/AVPlayerAutoStopService.swift:105:5: [1;33mwarning: [1;39m'public' modifier is redundant for instance method declared in a public extension[0;0m
[0;36m103 |[0;0m
[0;36m104 |[0;0m /// Pause the auto-stop player timer.
[0;36m105 |[0;0m public func pauseTimer() {
[0;36m|[0;0m `- [1;33mwarning: [1;39m'public' modifier is redundant for instance method declared in a public extension[0;0m
[0;36m106 |[0;0m autoStopTimer?.invalidate()
[0;36m107 |[0;0m }
/Users/admin/builder/spi-builder-workspace/Sources/AVPlayerWrapper/Service/AVPlayerAutoStopService.swift:110:5: [1;33mwarning: [1;39m'public' modifier is redundant for instance method declared in a public extension[0;0m
[0;36m108 |[0;0m
[0;36m109 |[0;0m /// Cancel the auto-stop player timer.
[0;36m110 |[0;0m public func cancelTimer() {
[0;36m|[0;0m `- [1;33mwarning: [1;39m'public' modifier is redundant for instance method declared in a public extension[0;0m
[0;36m111 |[0;0m autoStopTimer?.invalidate()
[0;36m112 |[0;0m autoStopTimer = nil
/Users/admin/builder/spi-builder-workspace/Sources/AVPlayerWrapper/Service/AVPlayerWrapper.swift:107:38: [1;33mwarning: [1;39m'weak' ownership of capture 'self' differs from implicitly-captured strong reference in outer scope[0;0m [#]8;;https://docs.swift.org/compiler/documentation/diagnostics/implicit-strong-capture\ImplicitStrongCapture]8;;\]
[0;36m104 |[0;0m self.stop(isNeedCancelAutoStop: true)
[0;36m105 |[0;0m },
[0;36m106 |[0;0m didUpdateAutoStopTime: { remainingTime in
[0;36m|[0;0m |- [1;39mnote: [1;39m'self' implicitly strongly captured here[0;0m
[0;36m|[0;0m `- [1;39mnote: [1;39madd 'self' as a capture list item to silence[0;0m
[0;36m107 |[0;0m onMainThread { [weak self] in
[0;36m|[0;0m |- [1;33mwarning: [1;39m'weak' ownership of capture 'self' differs from implicitly-captured strong reference in outer scope[0;0m [#]8;;https://docs.swift.org/compiler/documentation/diagnostics/implicit-strong-capture\ImplicitStrongCapture]8;;\]
[0;36m|[0;0m `- [1;39mnote: [1;39mexplicitly assign the capture list item to silence[0;0m
[0;36m108 |[0;0m guard let self = self else {
[0;36m109 |[0;0m return
/Users/admin/builder/spi-builder-workspace/Sources/AVPlayerWrapper/Service/AVPlayerWrapper.swift:116:38: [1;33mwarning: [1;39m'weak' ownership of capture 'self' differs from implicitly-captured strong reference in outer scope[0;0m [#]8;;https://docs.swift.org/compiler/documentation/diagnostics/implicit-strong-capture\ImplicitStrongCapture]8;;\]
[0;36m113 |[0;0m }
[0;36m114 |[0;0m },
[0;36m115 |[0;0m didUpdateAutoStopType: { type in
[0;36m|[0;0m |- [1;39mnote: [1;39m'self' implicitly strongly captured here[0;0m
[0;36m|[0;0m `- [1;39mnote: [1;39madd 'self' as a capture list item to silence[0;0m
[0;36m116 |[0;0m onMainThread { [weak self] in
[0;36m|[0;0m |- [1;33mwarning: [1;39m'weak' ownership of capture 'self' differs from implicitly-captured strong reference in outer scope[0;0m [#]8;;https://docs.swift.org/compiler/documentation/diagnostics/implicit-strong-capture\ImplicitStrongCapture]8;;\]
[0;36m|[0;0m `- [1;39mnote: [1;39mexplicitly assign the capture list item to silence[0;0m
[0;36m117 |[0;0m guard let self = self else {
[0;36m118 |[0;0m return
/Users/admin/builder/spi-builder-workspace/Sources/AVPlayerWrapper/Service/AVPlayerWrapper.swift:257:5: [1;33mwarning: [1;39m'public' modifier is redundant for instance method declared in a public extension[0;0m
[0;36m255 |[0;0m /// Plays the track at the specified index in the playlist.
[0;36m256 |[0;0m /// - Parameter index: The index of the track to be played.
[0;36m257 |[0;0m public func playTrack(at index: Int) {
[0;36m|[0;0m `- [1;33mwarning: [1;39m'public' modifier is redundant for instance method declared in a public extension[0;0m
[0;36m258 |[0;0m guard index < playlist.count else {
[0;36m259 |[0;0m return
/Users/admin/builder/spi-builder-workspace/Sources/AVPlayerWrapper/Service/AVPlayerWrapper.swift:272:5: [1;33mwarning: [1;39m'public' modifier is redundant for instance method declared in a public extension[0;0m
[0;36m270 |[0;0m
[0;36m271 |[0;0m /// Plays the next track in the playlist.
[0;36m272 |[0;0m public func playNextTrack() {
[0;36m|[0;0m `- [1;33mwarning: [1;39m'public' modifier is redundant for instance method declared in a public extension[0;0m
[0;36m273 |[0;0m if isCanPlayedNextAudio() {
[0;36m274 |[0;0m playTrack(at: currentTrackIndex + 1)
/Users/admin/builder/spi-builder-workspace/Sources/AVPlayerWrapper/Service/AVPlayerWrapper.swift:281:5: [1;33mwarning: [1;39m'public' modifier is redundant for instance method declared in a public extension[0;0m
[0;36m279 |[0;0m
[0;36m280 |[0;0m /// Plays the previous track in the playlist.
[0;36m281 |[0;0m public func playPreviousTrack() {
[0;36m|[0;0m `- [1;33mwarning: [1;39m'public' modifier is redundant for instance method declared in a public extension[0;0m
[0;36m282 |[0;0m if isCanPlayedPrevAudio() {
[0;36m283 |[0;0m playTrack(at: currentTrackIndex - 1)
/Users/admin/builder/spi-builder-workspace/Sources/AVPlayerWrapper/Service/AVPlayerWrapper.swift:288:5: [1;33mwarning: [1;39m'public' modifier is redundant for instance method declared in a public extension[0;0m
[0;36m286 |[0;0m
[0;36m287 |[0;0m /// Starts playback of the current track.
[0;36m288 |[0;0m public func play() {
[0;36m|[0;0m `- [1;33mwarning: [1;39m'public' modifier is redundant for instance method declared in a public extension[0;0m
[0;36m289 |[0;0m if options.isDisplayNowPlaying, let nowPlayingService = self.nowPlayingService {
[0;36m290 |[0;0m nowPlayingService.setupNowPlaying {
/Users/admin/builder/spi-builder-workspace/Sources/AVPlayerWrapper/Service/AVPlayerWrapper.swift:308:5: [1;33mwarning: [1;39m'public' modifier is redundant for instance method declared in a public extension[0;0m
[0;36m306 |[0;0m
[0;36m307 |[0;0m /// Pauses playback of the current track.
[0;36m308 |[0;0m public func pause() {
[0;36m|[0;0m `- [1;33mwarning: [1;39m'public' modifier is redundant for instance method declared in a public extension[0;0m
[0;36m309 |[0;0m player?.pause()
[0;36m310 |[0;0m autoStopService.pauseTimer()
/Users/admin/builder/spi-builder-workspace/Sources/AVPlayerWrapper/Service/AVPlayerWrapper.swift:318:5: [1;33mwarning: [1;39m'public' modifier is redundant for instance method declared in a public extension[0;0m
[0;36m316 |[0;0m
[0;36m317 |[0;0m /// Stops playback of the current track.
[0;36m318 |[0;0m public func stop(isNeedCancelAutoStop: Bool = true) {
[0;36m|[0;0m `- [1;33mwarning: [1;39m'public' modifier is redundant for instance method declared in a public extension[0;0m
[0;36m319 |[0;0m player?.pause()
[0;36m320 |[0;0m player?.seek(to: .zero)
/Users/admin/builder/spi-builder-workspace/Sources/AVPlayerWrapper/Service/AVPlayerWrapper.swift:353:5: [1;33mwarning: [1;39m'public' modifier is redundant for instance method declared in a public extension[0;0m
[0;36m351 |[0;0m /// Seeks to the specified time in the current track.
[0;36m352 |[0;0m /// - Parameter time: The time to seek to.
[0;36m353 |[0;0m public func seek(to time: CMTime) {
[0;36m|[0;0m `- [1;33mwarning: [1;39m'public' modifier is redundant for instance method declared in a public extension[0;0m
[0;36m354 |[0;0m player?.seek(to: time)
[0;36m355 |[0;0m }
/Users/admin/builder/spi-builder-workspace/Sources/AVPlayerWrapper/Service/AVPlayerWrapper.swift:359:5: [1;33mwarning: [1;39m'public' modifier is redundant for instance method declared in a public extension[0;0m
[0;36m357 |[0;0m /// Sets the playback rate of the player.
[0;36m358 |[0;0m /// - Parameter rate: The new playback rate.
[0;36m359 |[0;0m public func setPlaybackRate(to rate: Float) {
[0;36m|[0;0m `- [1;33mwarning: [1;39m'public' modifier is redundant for instance method declared in a public extension[0;0m
[0;36m360 |[0;0m guard let player = player else { return }
[0;36m361 |[0;0m player.rate = max(0.5, min(rate, 2.0))
/Users/admin/builder/spi-builder-workspace/Sources/AVPlayerWrapper/Service/AVPlayerWrapper.swift:366:5: [1;33mwarning: [1;39m'public' modifier is redundant for instance method declared in a public extension[0;0m
[0;36m364 |[0;0m /// Sets up the auto-stop feature with the specified type.
[0;36m365 |[0;0m /// - Parameter type: The type of auto-stop to be set.
[0;36m366 |[0;0m public func setupAutoStop(with type: AVPlayerAutoStopType) {
[0;36m|[0;0m `- [1;33mwarning: [1;39m'public' modifier is redundant for instance method declared in a public extension[0;0m
[0;36m367 |[0;0m autoStopService.setupAutoStop(with: type)
[0;36m368 |[0;0m }
/Users/admin/builder/spi-builder-workspace/Sources/AVPlayerWrapper/Service/AVPlayerWrapper.swift:372:5: [1;33mwarning: [1;39m'public' modifier is redundant for instance method declared in a public extension[0;0m
[0;36m370 |[0;0m /// Seeks forward by the specified number of seconds in the current track.
[0;36m371 |[0;0m /// - Parameter seconds: The number of seconds to seek forward.
[0;36m372 |[0;0m public func seekForward(by seconds: TimeInterval) {
[0;36m|[0;0m `- [1;33mwarning: [1;39m'public' modifier is redundant for instance method declared in a public extension[0;0m
[0;36m373 |[0;0m guard let player = player,
[0;36m374 |[0;0m let currentTime = player.currentItem?.currentTime() else {
/Users/admin/builder/spi-builder-workspace/Sources/AVPlayerWrapper/Service/AVPlayerWrapper.swift:385:5: [1;33mwarning: [1;39m'public' modifier is redundant for instance method declared in a public extension[0;0m
[0;36m383 |[0;0m /// Seeks backward by the specified number of seconds in the current track.
[0;36m384 |[0;0m /// - Parameter seconds: The number of seconds to seek backward.
[0;36m385 |[0;0m public func seekBackward(by seconds: TimeInterval) {
[0;36m|[0;0m `- [1;33mwarning: [1;39m'public' modifier is redundant for instance method declared in a public extension[0;0m
[0;36m386 |[0;0m guard let player = player,
[0;36m387 |[0;0m let currentTime = player.currentItem?.currentTime() else {
/Users/admin/builder/spi-builder-workspace/Sources/AVPlayerWrapper/Service/AVPlayerWrapper.swift:408:5: [1;33mwarning: [1;39m'public' modifier is redundant for instance method declared in a public extension[0;0m
[0;36m406 |[0;0m /// - didHandleError: An optional callback to be invoked when an error is handled.
[0;36m407 |[0;0m /// - didFailedSetAudioSession: An optional callback to be invoked when setting the audio session fails.
[0;36m408 |[0;0m public func setPlaylist(
[0;36m|[0;0m `- [1;33mwarning: [1;39m'public' modifier is redundant for instance method declared in a public extension[0;0m
[0;36m409 |[0;0m _ files: [AVPlayerWrapperMediaFile],
[0;36m410 |[0;0m didStartPlaying: Callback? = nil,
/Users/admin/builder/spi-builder-workspace/Sources/AVPlayerWrapper/Service/AVPlayerWrapper.swift:440:5: [1;33mwarning: [1;39m'public' modifier is redundant for instance method declared in a public extension[0;0m
[0;36m438 |[0;0m /// Indicates whether the previous audio track can be played.
[0;36m439 |[0;0m /// - Returns: A Boolean value indicating whether the previous audio track can be played.
[0;36m440 |[0;0m public func isCanPlayedPrevAudio() -> Bool {
[0;36m|[0;0m `- [1;33mwarning: [1;39m'public' modifier is redundant for instance method declared in a public extension[0;0m
[0;36m441 |[0;0m return currentTrackIndex > 0
[0;36m442 |[0;0m }
/Users/admin/builder/spi-builder-workspace/Sources/AVPlayerWrapper/Service/AVPlayerWrapper.swift:446:5: [1;33mwarning: [1;39m'public' modifier is redundant for instance method declared in a public extension[0;0m
[0;36m444 |[0;0m /// Indicates whether the next audio track can be played.
[0;36m445 |[0;0m /// - Returns: A Boolean value indicating whether the next audio track can be played.
[0;36m446 |[0;0m public func isCanPlayedNextAudio() -> Bool {
[0;36m|[0;0m `- [1;33mwarning: [1;39m'public' modifier is redundant for instance method declared in a public extension[0;0m
[0;36m447 |[0;0m return currentTrackIndex + 1 < playlist.count
[0;36m448 |[0;0m }
/Users/admin/builder/spi-builder-workspace/Sources/AVPlayerWrapper/Service/AVPlayerWrapper.swift:452:5: [1;33mwarning: [1;39m'public' modifier is redundant for instance method declared in a public extension[0;0m
[0;36m450 |[0;0m /// Gets the current auto-stop type.
[0;36m451 |[0;0m /// - Returns: The current auto-stop type.
[0;36m452 |[0;0m public func getAutoStopType() -> AVPlayerAutoStopType {
[0;36m|[0;0m `- [1;33mwarning: [1;39m'public' modifier is redundant for instance method declared in a public extension[0;0m
[0;36m453 |[0;0m return autoStopService.autoStopType
[0;36m454 |[0;0m }
[#ImplicitStrongCapture]: <https://docs.swift.org/compiler/documentation/diagnostics/implicit-strong-capture>
/Users/admin/builder/spi-builder-workspace/Sources/AVPlayerWrapper/Extensions/Extension+Bundle.swift:15:5: [1;33mwarning: [1;39m'public' modifier is redundant for instance method declared in a public extension[0;0m
[0;36m13 |[0;0m /// - Parameter fileName: The name of the resource file.
[0;36m14 |[0;0m /// - Returns: An optional `URL` pointing to the resource file.
[0;36m15 |[0;0m public func createFileUrl(forResource fileName: String) -> URL? {
[0;36m|[0;0m `- [1;33mwarning: [1;39m'public' modifier is redundant for instance method declared in a public extension[0;0m
[0;36m16 |[0;0m let components = fileName.split(separator: ".", maxSplits: 1).map(String.init)
[0;36m17 |[0;0m guard components.count == 2 else {
/Users/admin/builder/spi-builder-workspace/Sources/AVPlayerWrapper/Service/AVPlayerAutoStopService.swift:74:5: [1;33mwarning: [1;39m'public' modifier is redundant for instance method declared in a public extension[0;0m
[0;36m72 |[0;0m /// Sets up the auto stop playing with the specified type.
[0;36m73 |[0;0m /// - Parameter type: The type of auto-stop to be set.
[0;36m74 |[0;0m public func setupAutoStop(with type: AVPlayerAutoStopType) {
[0;36m|[0;0m `- [1;33mwarning: [1;39m'public' modifier is redundant for instance method declared in a public extension[0;0m
[0;36m75 |[0;0m self.autoStopType = type
[0;36m76 |[0;0m switch type {
/Users/admin/builder/spi-builder-workspace/Sources/AVPlayerWrapper/Service/AVPlayerAutoStopService.swift:87:5: [1;33mwarning: [1;39m'public' modifier is redundant for instance method declared in a public extension[0;0m
[0;36m85 |[0;0m
[0;36m86 |[0;0m /// Try starts the auto-stop player timer, if needed.
[0;36m87 |[0;0m public func startTimer() {
[0;36m|[0;0m `- [1;33mwarning: [1;39m'public' modifier is redundant for instance method declared in a public extension[0;0m
[0;36m88 |[0;0m switch self.autoStopType {
[0;36m89 |[0;0m case .disable:
/Users/admin/builder/spi-builder-workspace/Sources/AVPlayerWrapper/Service/AVPlayerAutoStopService.swift:105:5: [1;33mwarning: [1;39m'public' modifier is redundant for instance method declared in a public extension[0;0m
[0;36m103 |[0;0m
[0;36m104 |[0;0m /// Pause the auto-stop player timer.
[0;36m105 |[0;0m public func pauseTimer() {
[0;36m|[0;0m `- [1;33mwarning: [1;39m'public' modifier is redundant for instance method declared in a public extension[0;0m
[0;36m106 |[0;0m autoStopTimer?.invalidate()
[0;36m107 |[0;0m }
/Users/admin/builder/spi-builder-workspace/Sources/AVPlayerWrapper/Service/AVPlayerAutoStopService.swift:110:5: [1;33mwarning: [1;39m'public' modifier is redundant for instance method declared in a public extension[0;0m
[0;36m108 |[0;0m
[0;36m109 |[0;0m /// Cancel the auto-stop player timer.
[0;36m110 |[0;0m public func cancelTimer() {
[0;36m|[0;0m `- [1;33mwarning: [1;39m'public' modifier is redundant for instance method declared in a public extension[0;0m
[0;36m111 |[0;0m autoStopTimer?.invalidate()
[0;36m112 |[0;0m autoStopTimer = nil
/Users/admin/builder/spi-builder-workspace/Sources/AVPlayerWrapper/Service/AVPlayerWrapper.swift:107:38: [1;33mwarning: [1;39m'weak' ownership of capture 'self' differs from implicitly-captured strong reference in outer scope[0;0m [#]8;;https://docs.swift.org/compiler/documentation/diagnostics/implicit-strong-capture\ImplicitStrongCapture]8;;\]
[0;36m104 |[0;0m self.stop(isNeedCancelAutoStop: true)
[0;36m105 |[0;0m },
[0;36m106 |[0;0m didUpdateAutoStopTime: { remainingTime in
[0;36m|[0;0m |- [1;39mnote: [1;39m'self' implicitly strongly captured here[0;0m
[0;36m|[0;0m `- [1;39mnote: [1;39madd 'self' as a capture list item to silence[0;0m
[0;36m107 |[0;0m onMainThread { [weak self] in
[0;36m|[0;0m |- [1;33mwarning: [1;39m'weak' ownership of capture 'self' differs from implicitly-captured strong reference in outer scope[0;0m [#]8;;https://docs.swift.org/compiler/documentation/diagnostics/implicit-strong-capture\ImplicitStrongCapture]8;;\]
[0;36m|[0;0m `- [1;39mnote: [1;39mexplicitly assign the capture list item to silence[0;0m
[0;36m108 |[0;0m guard let self = self else {
[0;36m109 |[0;0m return
/Users/admin/builder/spi-builder-workspace/Sources/AVPlayerWrapper/Service/AVPlayerWrapper.swift:116:38: [1;33mwarning: [1;39m'weak' ownership of capture 'self' differs from implicitly-captured strong reference in outer scope[0;0m [#]8;;https://docs.swift.org/compiler/documentation/diagnostics/implicit-strong-capture\ImplicitStrongCapture]8;;\]
[0;36m113 |[0;0m }
[0;36m114 |[0;0m },
[0;36m115 |[0;0m didUpdateAutoStopType: { type in
[0;36m|[0;0m |- [1;39mnote: [1;39m'self' implicitly strongly captured here[0;0m
[0;36m|[0;0m `- [1;39mnote: [1;39madd 'self' as a capture list item to silence[0;0m
[0;36m116 |[0;0m onMainThread { [weak self] in
[0;36m|[0;0m |- [1;33mwarning: [1;39m'weak' ownership of capture 'self' differs from implicitly-captured strong reference in outer scope[0;0m [#]8;;https://docs.swift.org/compiler/documentation/diagnostics/implicit-strong-capture\ImplicitStrongCapture]8;;\]
[0;36m|[0;0m `- [1;39mnote: [1;39mexplicitly assign the capture list item to silence[0;0m
[0;36m117 |[0;0m guard let self = self else {
[0;36m118 |[0;0m return
/Users/admin/builder/spi-builder-workspace/Sources/AVPlayerWrapper/Service/AVPlayerWrapper.swift:257:5: [1;33mwarning: [1;39m'public' modifier is redundant for instance method declared in a public extension[0;0m
[0;36m255 |[0;0m /// Plays the track at the specified index in the playlist.
[0;36m256 |[0;0m /// - Parameter index: The index of the track to be played.
[0;36m257 |[0;0m public func playTrack(at index: Int) {
[0;36m|[0;0m `- [1;33mwarning: [1;39m'public' modifier is redundant for instance method declared in a public extension[0;0m
[0;36m258 |[0;0m guard index < playlist.count else {
[0;36m259 |[0;0m return
/Users/admin/builder/spi-builder-workspace/Sources/AVPlayerWrapper/Service/AVPlayerWrapper.swift:272:5: [1;33mwarning: [1;39m'public' modifier is redundant for instance method declared in a public extension[0;0m
[0;36m270 |[0;0m
[0;36m271 |[0;0m /// Plays the next track in the playlist.
[0;36m272 |[0;0m public func playNextTrack() {
[0;36m|[0;0m `- [1;33mwarning: [1;39m'public' modifier is redundant for instance method declared in a public extension[0;0m
[0;36m273 |[0;0m if isCanPlayedNextAudio() {
[0;36m274 |[0;0m playTrack(at: currentTrackIndex + 1)
/Users/admin/builder/spi-builder-workspace/Sources/AVPlayerWrapper/Service/AVPlayerWrapper.swift:281:5: [1;33mwarning: [1;39m'public' modifier is redundant for instance method declared in a public extension[0;0m
[0;36m279 |[0;0m
[0;36m280 |[0;0m /// Plays the previous track in the playlist.
[0;36m281 |[0;0m public func playPreviousTrack() {
[0;36m|[0;0m `- [1;33mwarning: [1;39m'public' modifier is redundant for instance method declared in a public extension[0;0m
[0;36m282 |[0;0m if isCanPlayedPrevAudio() {
[0;36m283 |[0;0m playTrack(at: currentTrackIndex - 1)
/Users/admin/builder/spi-builder-workspace/Sources/AVPlayerWrapper/Service/AVPlayerWrapper.swift:288:5: [1;33mwarning: [1;39m'public' modifier is redundant for instance method declared in a public extension[0;0m
[0;36m286 |[0;0m
[0;36m287 |[0;0m /// Starts playback of the current track.
[0;36m288 |[0;0m public func play() {
[0;36m|[0;0m `- [1;33mwarning: [1;39m'public' modifier is redundant for instance method declared in a public extension[0;0m
[0;36m289 |[0;0m if options.isDisplayNowPlaying, let nowPlayingService = self.nowPlayingService {
[0;36m290 |[0;0m nowPlayingService.setupNowPlaying {
/Users/admin/builder/spi-builder-workspace/Sources/AVPlayerWrapper/Service/AVPlayerWrapper.swift:308:5: [1;33mwarning: [1;39m'public' modifier is redundant for instance method declared in a public extension[0;0m
[0;36m306 |[0;0m
[0;36m307 |[0;0m /// Pauses playback of the current track.
[0;36m308 |[0;0m public func pause() {
[0;36m|[0;0m `- [1;33mwarning: [1;39m'public' modifier is redundant for instance method declared in a public extension[0;0m
[0;36m309 |[0;0m player?.pause()
[0;36m310 |[0;0m autoStopService.pauseTimer()
/Users/admin/builder/spi-builder-workspace/Sources/AVPlayerWrapper/Service/AVPlayerWrapper.swift:318:5: [1;33mwarning: [1;39m'public' modifier is redundant for instance method declared in a public extension[0;0m
[0;36m316 |[0;0m
[0;36m317 |[0;0m /// Stops playback of the current track.
[0;36m318 |[0;0m public func stop(isNeedCancelAutoStop: Bool = true) {
[0;36m|[0;0m `- [1;33mwarning: [1;39m'public' modifier is redundant for instance method declared in a public extension[0;0m
[0;36m319 |[0;0m player?.pause()
[0;36m320 |[0;0m player?.seek(to: .zero)
/Users/admin/builder/spi-builder-workspace/Sources/AVPlayerWrapper/Service/AVPlayerWrapper.swift:353:5: [1;33mwarning: [1;39m'public' modifier is redundant for instance method declared in a public extension[0;0m
[0;36m351 |[0;0m /// Seeks to the specified time in the current track.
[0;36m352 |[0;0m /// - Parameter time: The time to seek to.
[0;36m353 |[0;0m public func seek(to time: CMTime) {
[0;36m|[0;0m `- [1;33mwarning: [1;39m'public' modifier is redundant for instance method declared in a public extension[0;0m
[0;36m354 |[0;0m player?.seek(to: time)
[0;36m355 |[0;0m }
/Users/admin/builder/spi-builder-workspace/Sources/AVPlayerWrapper/Service/AVPlayerWrapper.swift:359:5: [1;33mwarning: [1;39m'public' modifier is redundant for instance method declared in a public extension[0;0m
[0;36m357 |[0;0m /// Sets the playback rate of the player.
[0;36m358 |[0;0m /// - Parameter rate: The new playback rate.
[0;36m359 |[0;0m public func setPlaybackRate(to rate: Float) {
[0;36m|[0;0m `- [1;33mwarning: [1;39m'public' modifier is redundant for instance method declared in a public extension[0;0m
[0;36m360 |[0;0m guard let player = player else { return }
[0;36m361 |[0;0m player.rate = max(0.5, min(rate, 2.0))
/Users/admin/builder/spi-builder-workspace/Sources/AVPlayerWrapper/Service/AVPlayerWrapper.swift:366:5: [1;33mwarning: [1;39m'public' modifier is redundant for instance method declared in a public extension[0;0m
[0;36m364 |[0;0m /// Sets up the auto-stop feature with the specified type.
[0;36m365 |[0;0m /// - Parameter type: The type of auto-stop to be set.
[0;36m366 |[0;0m public func setupAutoStop(with type: AVPlayerAutoStopType) {
[0;36m|[0;0m `- [1;33mwarning: [1;39m'public' modifier is redundant for instance method declared in a public extension[0;0m
[0;36m367 |[0;0m autoStopService.setupAutoStop(with: type)
[0;36m368 |[0;0m }
/Users/admin/builder/spi-builder-workspace/Sources/AVPlayerWrapper/Service/AVPlayerWrapper.swift:372:5: [1;33mwarning: [1;39m'public' modifier is redundant for instance method declared in a public extension[0;0m
[0;36m370 |[0;0m /// Seeks forward by the specified number of seconds in the current track.
[0;36m371 |[0;0m /// - Parameter seconds: The number of seconds to seek forward.
[0;36m372 |[0;0m public func seekForward(by seconds: TimeInterval) {
[0;36m|[0;0m `- [1;33mwarning: [1;39m'public' modifier is redundant for instance method declared in a public extension[0;0m
[0;36m373 |[0;0m guard let player = player,
[0;36m374 |[0;0m let currentTime = player.currentItem?.currentTime() else {
/Users/admin/builder/spi-builder-workspace/Sources/AVPlayerWrapper/Service/AVPlayerWrapper.swift:385:5: [1;33mwarning: [1;39m'public' modifier is redundant for instance method declared in a public extension[0;0m
[0;36m383 |[0;0m /// Seeks backward by the specified number of seconds in the current track.
[0;36m384 |[0;0m /// - Parameter seconds: The number of seconds to seek backward.
[0;36m385 |[0;0m public func seekBackward(by seconds: TimeInterval) {
[0;36m|[0;0m `- [1;33mwarning: [1;39m'public' modifier is redundant for instance method declared in a public extension[0;0m
[0;36m386 |[0;0m guard let player = player,
[0;36m387 |[0;0m let currentTime = player.currentItem?.currentTime() else {
/Users/admin/builder/spi-builder-workspace/Sources/AVPlayerWrapper/Service/AVPlayerWrapper.swift:408:5: [1;33mwarning: [1;39m'public' modifier is redundant for instance method declared in a public extension[0;0m
[0;36m406 |[0;0m /// - didHandleError: An optional callback to be invoked when an error is handled.
[0;36m407 |[0;0m /// - didFailedSetAudioSession: An optional callback to be invoked when setting the audio session fails.
[0;36m408 |[0;0m public func setPlaylist(
[0;36m|[0;0m `- [1;33mwarning: [1;39m'public' modifier is redundant for instance method declared in a public extension[0;0m
[0;36m409 |[0;0m _ files: [AVPlayerWrapperMediaFile],
[0;36m410 |[0;0m didStartPlaying: Callback? = nil,
/Users/admin/builder/spi-builder-workspace/Sources/AVPlayerWrapper/Service/AVPlayerWrapper.swift:440:5: [1;33mwarning: [1;39m'public' modifier is redundant for instance method declared in a public extension[0;0m
[0;36m438 |[0;0m /// Indicates whether the previous audio track can be played.
[0;36m439 |[0;0m /// - Returns: A Boolean value indicating whether the previous audio track can be played.
[0;36m440 |[0;0m public func isCanPlayedPrevAudio() -> Bool {
[0;36m|[0;0m `- [1;33mwarning: [1;39m'public' modifier is redundant for instance method declared in a public extension[0;0m
[0;36m441 |[0;0m return currentTrackIndex > 0
[0;36m442 |[0;0m }
/Users/admin/builder/spi-builder-workspace/Sources/AVPlayerWrapper/Service/AVPlayerWrapper.swift:446:5: [1;33mwarning: [1;39m'public' modifier is redundant for instance method declared in a public extension[0;0m
[0;36m444 |[0;0m /// Indicates whether the next audio track can be played.
[0;36m445 |[0;0m /// - Returns: A Boolean value indicating whether the next audio track can be played.
[0;36m446 |[0;0m public func isCanPlayedNextAudio() -> Bool {
[0;36m|[0;0m `- [1;33mwarning: [1;39m'public' modifier is redundant for instance method declared in a public extension[0;0m
[0;36m447 |[0;0m return currentTrackIndex + 1 < playlist.count
[0;36m448 |[0;0m }
/Users/admin/builder/spi-builder-workspace/Sources/AVPlayerWrapper/Service/AVPlayerWrapper.swift:452:5: [1;33mwarning: [1;39m'public' modifier is redundant for instance method declared in a public extension[0;0m
[0;36m450 |[0;0m /// Gets the current auto-stop type.
[0;36m451 |[0;0m /// - Returns: The current auto-stop type.
[0;36m452 |[0;0m public func getAutoStopType() -> AVPlayerAutoStopType {
[0;36m|[0;0m `- [1;33mwarning: [1;39m'public' modifier is redundant for instance method declared in a public extension[0;0m
[0;36m453 |[0;0m return autoStopService.autoStopType
[0;36m454 |[0;0m }
/Users/admin/builder/spi-builder-workspace/Sources/AVPlayerWrapper/Service/AVPlayerWrapper.swift:473:34: [1;33mwarning: [1;39m'weak' ownership of capture 'self' differs from implicitly-captured strong reference in outer scope[0;0m [#]8;;https://docs.swift.org/compiler/documentation/diagnostics/implicit-strong-capture\ImplicitStrongCapture]8;;\]
[0;36m470 |[0;0m setupAVAudioSession()
[0;36m471 |[0;0m
[0;36m472 |[0;0m self.getCurrentDuration { duration in
[0;36m|[0;0m |- [1;39mnote: [1;39m'self' implicitly strongly captured here[0;0m
[0;36m|[0;0m `- [1;39mnote: [1;39madd 'self' as a capture list item to silence[0;0m
[0;36m473 |[0;0m onMainThread { [weak self] in
[0;36m|[0;0m |- [1;33mwarning: [1;39m'weak' ownership of capture 'self' differs from implicitly-captured strong reference in outer scope[0;0m [#]8;;https://docs.swift.org/compiler/documentation/diagnostics/implicit-strong-capture\ImplicitStrongCapture]8;;\]
[0;36m|[0;0m `- [1;39mnote: [1;39mexplicitly assign the capture list item to silence[0;0m
[0;36m474 |[0;0m let timeModel = AVAssetTime(currentTime: CMTime(), duration: duration ?? CMTime())
[0;36m475 |[0;0m self?.didUpdateTime?(timeModel)
/Users/admin/builder/spi-builder-workspace/Sources/AVPlayerWrapper/Service/AVPlayerWrapper.swift:478:177: [1;33mwarning: [1;39m'weak' ownership of capture 'self' differs from implicitly-captured strong reference in outer scope[0;0m [#]8;;https://docs.swift.org/compiler/documentation/diagnostics/implicit-strong-capture\ImplicitStrongCapture]8;;\]
[0;36m470 |[0;0m setupAVAudioSession()
[0;36m471 |[0;0m
[0;36m472 |[0;0m self.getCurrentDuration { duration in
[0;36m|[0;0m |- [1;39mnote: [1;39m'self' implicitly strongly captured here[0;0m
[0;36m|[0;0m `- [1;39mnote: [1;39madd 'self' as a capture list item to silence[0;0m
[0;36m473 |[0;0m onMainThread { [weak self] in
[0;36m474 |[0;0m let timeModel = AVAssetTime(currentTime: CMTime(), duration: duration ?? CMTime())
[0;36m:[0;0m
[0;36m476 |[0;0m self?.delegate?.didUpdateTime(time: timeModel)
[0;36m477 |[0;0m }
[0;36m478 |[0;0m self.timeObserverToken = self.player?.addPeriodicTimeObserver(forInterval: CMTime(seconds: 1, preferredTimescale: CMTimeScale(NSEC_PER_SEC)), queue: .main) { [weak self] time in
[0;36m|[0;0m |- [1;33mwarning: [1;39m'weak' ownership of capture 'self' differs from implicitly-captured strong reference in outer scope[0;0m [#]8;;https://docs.swift.org/compiler/documentation/diagnostics/implicit-strong-capture\ImplicitStrongCapture]8;;\]
[0;36m|[0;0m `- [1;39mnote: [1;39mexplicitly assign the capture list item to silence[0;0m
[0;36m479 |[0;0m guard let self = self,
[0;36m480 |[0;0m let currentItem = self.playerItem else {
/Users/admin/builder/spi-builder-workspace/Sources/AVPlayerWrapper/Service/AVPlayerWrapper.swift:480:27: [1;33mwarning: [1;39mimmutable value 'currentItem' was never used; consider replacing with '_' or removing it[0;0m [#]8;;https://docs.swift.org/compiler/documentation/diagnostics/no-usage\NoUsage]8;;\]
[0;36m478 |[0;0m self.timeObserverToken = self.player?.addPeriodicTimeObserver(forInterval: CMTime(seconds: 1, preferredTimescale: CMTimeScale(NSEC_PER_SEC)), queue: .main) { [weak self] time in
[0;36m479 |[0;0m guard let self = self,
[0;36m480 |[0;0m let currentItem = self.playerItem else {
[0;36m|[0;0m `- [1;33mwarning: [1;39mimmutable value 'currentItem' was never used; consider replacing with '_' or removing it[0;0m [#]8;;https://docs.swift.org/compiler/documentation/diagnostics/no-usage\NoUsage]8;;\]
[0;36m481 |[0;0m return
[0;36m482 |[0;0m }
/Users/admin/builder/spi-builder-workspace/Sources/AVPlayerWrapper/Service/AVPlayerWrapper.swift:499:34: [1;33mwarning: [1;39m'weak' ownership of capture 'self' differs from implicitly-captured strong reference in outer scope[0;0m [#]8;;https://docs.swift.org/compiler/documentation/diagnostics/implicit-strong-capture\ImplicitStrongCapture]8;;\]
[0;36m495 |[0;0m // Add notification observers
[0;36m496 |[0;0m NotificationCenter.default.addObserver(self, selector: #selector(self.playerDidFinishPlaying), name: .AVPlayerItemDidPlayToEndTime, object: self.playerItem)
[0;36m497 |[0;0m NotificationCenter.default.addObserver(forName: .AVPlayerItemFailedToPlayToEndTime, object: self.playerItem, queue: .main) { notification in
[0;36m|[0;0m |- [1;39mnote: [1;39m'self' implicitly strongly captured here[0;0m
[0;36m|[0;0m `- [1;39mnote: [1;39madd 'self' as a capture list item to silence[0;0m
[0;36m498 |[0;0m let error = notification.userInfo?[AVPlayerItemFailedToPlayToEndTimeErrorKey] as? Error
[0;36m499 |[0;0m onMainThread { [weak self] in
[0;36m|[0;0m |- [1;33mwarning: [1;39m'weak' ownership of capture 'self' differs from implicitly-captured strong reference in outer scope[0;0m [#]8;;https://docs.swift.org/compiler/documentation/diagnostics/implicit-strong-capture\ImplicitStrongCapture]8;;\]
[0;36m|[0;0m `- [1;39mnote: [1;39mexplicitly assign the capture list item to silence[0;0m
[0;36m500 |[0;0m self?.didHandleError?(error)
[0;36m501 |[0;0m self?.delegate?.didHandleError(error: error)
/Users/admin/builder/spi-builder-workspace/Sources/AVPlayerWrapper/Service/AVPlayerWrapper.swift:510:39: [1;33mwarning: [1;39m'weak' ownership of capture 'self' differs from implicitly-captured strong reference in outer scope[0;0m [#]8;;https://docs.swift.org/compiler/documentation/diagnostics/implicit-strong-capture\ImplicitStrongCapture]8;;\]
[0;36m507 |[0;0m \.status,
[0;36m508 |[0;0m options: [.old, .new, .initial],
[0;36m509 |[0;0m changeHandler: { item, change in
[0;36m|[0;0m |- [1;39mnote: [1;39m'self' implicitly strongly captured here[0;0m
[0;36m|[0;0m `- [1;39mnote: [1;39madd 'self' as a capture list item to silence[0;0m
[0;36m510 |[0;0m onMainThread { [weak self] in
[0;36m|[0;0m |- [1;33mwarning: [1;39m'weak' ownership of capture 'self' differs from implicitly-captured strong reference in outer scope[0;0m [#]8;;https://docs.swift.org/compiler/documentation/diagnostics/implicit-strong-capture\ImplicitStrongCapture]8;;\]
[0;36m|[0;0m `- [1;39mnote: [1;39mexplicitly assign the capture list item to silence[0;0m
[0;36m511 |[0;0m self?.didUpdateStatus?(item.status)
[0;36m512 |[0;0m self?.delegate?.didUpdateStatus(status: item.status)
/Users/admin/builder/spi-builder-workspace/Sources/AVPlayerWrapper/Service/AVPlayerWrapper.swift:538:19: [1;33mwarning: [1;39mimmutable value 'playerItem' was never used; consider replacing with '_' or removing it[0;0m [#]8;;https://docs.swift.org/compiler/documentation/diagnostics/no-usage\NoUsage]8;;\]
[0;36m536 |[0;0m /// - Parameter callback: A closure to be executed with the current duration as `CMTime?`.
[0;36m537 |[0;0m func getCurrentDuration(callback: ((_: CMTime?) -> Void)?) {
[0;36m538 |[0;0m guard let playerItem = self.playerItem,
[0;36m|[0;0m `- [1;33mwarning: [1;39mimmutable value 'playerItem' was never used; consider replacing with '_' or removing it[0;0m [#]8;;https://docs.swift.org/compiler/documentation/diagnostics/no-usage\NoUsage]8;;\]
[0;36m539 |[0;0m let player = self.player else {
[0;36m540 |[0;0m callback?(nil)
/Users/admin/builder/spi-builder-workspace/Sources/AVPlayerWrapper/Service/AVPlayerWrapper.swift:636:24: [1;33mwarning: [1;39m'let' pattern has no effect; sub-pattern didn't bind any variables[0;0m
[0;36m634 |[0;0m
[0;36m635 |[0;0m func continuePlayingPlaylist() {
[0;36m636 |[0;0m guard case let [4;39mAVPlayerAutoStopType.afterTrackEnd[0;0m = autoStopService.autoStopType else {
[0;36m|[0;0m `- [1;33mwarning: [1;39m'let' pattern has no effect; sub-pattern didn't bind any variables[0;0m
[0;36m637 |[0;0m playNextTrack()
[0;36m638 |[0;0m return
[#ImplicitStrongCapture]: <https://docs.swift.org/compiler/documentation/diagnostics/implicit-strong-capture>
[#NoUsage]: <https://docs.swift.org/compiler/documentation/diagnostics/no-usage>
Build complete.
{
"dependencies" : [
{
"identity" : "appviewutilits",
"requirement" : {
"range" : [
{
"lower_bound" : "1.3.1",
"upper_bound" : "2.0.0"
}
]
},
"type" : "sourceControl",
"url" : "https://github.com/moslienko/AppViewUtilits.git"
}
],
"manifest_display_name" : "AVPlayerWrapper",
"name" : "AVPlayerWrapper",
"path" : "/Users/admin/builder/spi-builder-workspace",
"platforms" : [
{
"name" : "ios",
"version" : "12.0"
},
{
"name" : "macos",
"version" : "10.13"
}
],
"products" : [
{
"name" : "AVPlayerWrapper",
"targets" : [
"AVPlayerWrapper"
],
"type" : {
"library" : [
"automatic"
]
}
}
],
"targets" : [
{
"c99name" : "AVPlayerWrapperTests",
"module_type" : "SwiftTarget",
"name" : "AVPlayerWrapperTests",
"path" : "Tests/AVPlayerWrapperTests",
"sources" : [
"AVPlayerWrapperTests.swift"
],
"target_dependencies" : [
"AVPlayerWrapper"
],
"type" : "test"
},
{
"c99name" : "AVPlayerWrapper",
"module_type" : "SwiftTarget",
"name" : "AVPlayerWrapper",
"path" : "Sources/AVPlayerWrapper",
"product_dependencies" : [
"AppViewUtilits"
],
"product_memberships" : [
"AVPlayerWrapper"
],
"sources" : [
"Data/AVAssetTime.swift",
"Data/AVPlayerAfterAutoStopAction.swift",
"Data/AVPlayerAutoStopType.swift",
"Data/AVPlayerLoopType.swift",
"Data/AVPlayerWrapperMediaFile.swift",
"Data/Options/AVPlayerOptions.swift",
"Data/Options/AVSession.swift",
"Extensions/Extension+Bundle.swift",
"Service/AVPlayerAutoStopService.swift",
"Service/AVPlayerWrapper.swift",
"Service/NowPlayingService.swift"
],
"type" : "library"
}
],
"tools_version" : "5.9"
}
Done.