I finally tracked the problem down. A framework Bugsee installed a video monitor in a displayLink. It probably got frames and then released them immediately, but the memory trashing took Instruments down. When I disabled most of Bugsee features relating to video/screen capture, this problem went away.
Post
Replies
Boosts
Views
Activity
Combine is Apple proprietary, so I didn't think it appropriate (but did see another one there).Done: forums.swift.org / t / need-help-using-combine-demand-back-pressure / 35015
Claude, I'm writing my own Publisher, Subscriber, and Subscriptions. Most everyone uses infinite demands so my questions don't apply, I really want to understand actual usage and with no demo code from Apple using it, no way to know.I recently wrote a small article on Combine, and there are a slew of them on the web, and each has a different take on the topic. So many are wrong, and it would just be great to get this clarified.
Thank you so much for this! One question - does xcodebuild examine each library to determine what architecture (and in the case of x86/arm) determine what the target device is? So no need for some manifest telling it this info I guess.Again - thanks so much!
BTW, those warnings (and I'm dealing with them too in an open source lib) are now hard errors in Xcode 11.4-beta. FYI.
Turns out the NWPath has an array of interfaces ("availableInterfaces)", they are hashable. So one can keep an array of interfaces and their state.That said, I did testing with my phone, turning WIFI and Cellular on and off, singly or together, to see when the block gets called. Based on that, I determine:1) the status of the last block is the overall status (satisfied or not)2 the last status message of "satisfied" returns the expensive state of the overall networking path: if the system believes it can use WIFI, then its false. If the only option is cellular, then its expensive.In other words, if you turn cellular on, then wifi, then wifi off, the last status message references cellular and expensive is set.
I understand optional protocols. The compiler knows its optional, that's why "delegate.stream" cannot be called directly.I correctly guessed that I could add a "?" and use this "delegate.stream?(fetcher, handle: .openCompleted)", which compiles just fine.Then it occurred to me - why not try to get the function as its own variable, assuming it exists, with "let stream = delegate.stream" in the guard statement. That works fine.But when I go to use this function, I get a warning that the "handle:" parameter should not be there. It is this error I don' understand.
Experiencing the same thing on the Simulator. What is interesting is that if you alternate - select the first row, go back, select the second row, go back, then you can select the first row again. The issue is that you cannot select the same row again.Is there a bug report on this?
It just seems I can do better with my own Text() view in a HStack, but haven't tried. The Stepper could be shown in an iPad with a huge amount of space, or in a small iPhone, so no easy way to apply a frame to it. It sure seems odd to me that the text size shrinks with the minimumScaleFactor regardless of the number of characters.
Entered a bug on Swift.org, it was accepted, and as a result two other bugs were found :-)https://bugs.swift.org/browse/SR-11934
OK - never fails now if there is no filtering?!?! But if I add a filter (either of the two), then it fails at the next loop: let videoComposition = AVVideoComposition(asset: asset, applyingCIFiltersWithHandler: { request in
var outputImage = request.sourceImage
defer {
request.finish(with: outputImage, context: nil)
}
do {
var angle = self.hueAngle
let radians = degrees2radians(angle)
angle = (angle + 1) % 360
self.hueAngle = angle
self.hueFilter.angle = radians
self.hueFilter.inputImage = outputImage
outputImage = self.hueFilter.outputImage!
}
do {
var radius = self.radius
let inc = self.inc
radius += inc
if radius > 5 {
radius = 5
self.inc *= -1
}
if radius < 0 {
radius = 0
self.inc *= -1
}
self.radius = radius
self.blurFilter.radius = radius
self.blurFilter.inputImage = outputImage
outputImage = self.blurFilter.outputImage!
}
})Obviously validating the composition makes something better in the composition object.
Now I'm really pulling my hair out. I added this test to be 100% sure the video was properly constructed:let ret = videoComposition.isValid(for: asset, timeRange: timeRange, validationDelegate: self)
print("VALIDATE", ret)All possible delegate calls implemented with print statemens - but it returns true and I got no delegate calls. But now, the looper is not failing! Sixteen loops so far and still going strong (will leave it on!). Grrrrr