Post

Replies

Boosts

Views

Activity

Feedback Assistant shows messages in wrong order
Since March of 2020 Feedback Assistant started showing messages inside of feedbacks in the wrong order. For feedbacks where I respond shortly after a message from Apple, my response is actually shown before Apple's response, so that it is quite difficult reading those old reports. I haven't heard anything from Apple since, and this issue still happens. I keep hearing from the Apple support that Apple really cares about feedback, but why does it take so long to solve an issue that makes it so difficult handling and providing additional feedback?
0
0
466
Jan ’21
How to make a NSManagedObjectContext selectively forget about entities?
In my app I have a main context A and a sub-context B which has A as its parent. In context B I insert many objects that are rarely needed, so I would like to just write them to disk without keeping them in memory. Currently I call contextB.reset() which frees some memory, but those objects still exist in context A. How can I wipe them out of context A without permanently deleting them and without affecting all the other entities that I fetch using context A? I cannot call contextA.reset() because then all the entity references that I still need become invalid, but I couldn't find a way of making a context selectively forget about entities.
0
0
362
Dec ’20
Does Apple really care and take feedback seriously?
I know, it's a provocative title, but I couldn't come up with a title that could better summarise the issue that I want to discuss here. I have been regularly sending feedback (via the old Bug Reporter and now the new Feedback Assistant) since about 4 years ago. Before that, I maybe opened 1 feedback per week, then at some point I said to myself that I wanted to report everything, even the tiniest detail, that looked or behaved like a bug. (If I don't report everything, why report anything at all?) So I ended up opening from 5 to 20 bug reports every day, for the last 4 years. I still wonder how it's even possible to find that many bugs. They are not all equally important: some of them are serious, some of them are little UI glitches. I just sent 12 feedback reports in less than 1 hour. It often happens that while waiting for the sysdiagnose to finish gathering or while sending a feedback report I notice other bugs: reporting bugs seems to attract other bugs. Now, the few Apple engineers that get back to me for some of these issues and the Apple support as well often tell me that Apple really cares about customer feedback. I really want to believe this ... but it's so hard to believe it, if less than 1% of my submitted reports (yes, less than 1%, and it's probably much less) ever gets a response. A response, if it ever comes, can come after 3 months, or after 1 year, or after 3 years; only rarely does it come within 1 month. To some of the feedbacks, after getting a response from the Apple engineers, I responded, among other things, by asking if I'm doing something wrong with the way I submit the feedback reports. Because if I do something wrong, then that could be the reason why only so few of them are considered by the Apple engineers. But I never got any answer to that. I told them that it's frustrating sending so much feedback without ever knowing if it's helpful or not, and never got an answer. At times Apple seems to mock me by closing reports with messages like these: "iTunes has been replaced by the Music app recently: if this issue still happens in the Music app, please file a new report." "This behaviour in AppKit/Cocoa is intended. Please file a new report to improve the documentation." "Much time has passed since this report has been opened and there have been many changes to macOS since then. If this issue still happens, please file a new report." Whenever these events happen, I feel like I'm wasting my time. I'm aware that it's my decision to spend my time reporting feedback, but the few feedback I get myself from Apple rarely gives me the impression that my help is appreciated. Shouldn't Apple try to investigate every feedback before closing them because the app for which they were filed has been replaced by another one? Shouldn't they feel responsible for moving or somehow forking feedbacks themselves if it turns out that it's not an issue but an incomplete or perhaps wrong documentation? Shouldn't they allocate more resources to evaluating feedback and fixing bugs rather than leaving them open for years and then asking the developer who submitted them to check if they still happen? Shouldn't they feel obliged to answer every feedback or let the developer know why only a small percentage is answered and actually fixed?
0
1
1.1k
Dec ’20
Xcode crashes when distributing product for App Store Connect
After building the Product Archive, the Organizer window opens, I click Distribute App. Next. Next. Next. Next. Crash. The crash happens before I'm able to export anything, so I cannot even use the Application Loader. The last message above the indeterminate progress indicator I can read before it crashes is "Packaging MyApp ...". It would be really nice if an Apple engineer could help sort this out, because I already contacted the App Store Connect support and they told me that the only way I can get help is by writing on this forum, searching the Xcode documentation, or using one of the 2 free TSIs I get each year (which I have already used). Stacktrace (I tried to paste the whole crash report, but I get an error that the message is too long and that I should click on the icon to attach a file instead, but I don't see such an icon): Process:&#9;&#9;&#9;&#9;&#9;&#9;&#9; Xcode [834] Path:&#9;&#9;&#9;&#9;&#9;&#9;&#9;&#9;&#9;/Applications/Xcode.app/Contents/MacOS/Xcode Identifier:&#9;&#9;&#9;&#9;&#9;&#9;com.apple.dt.Xcode Version:&#9;&#9;&#9;&#9;&#9;&#9;&#9; 12.2 (17535) Build Info:&#9;&#9;&#9;&#9;&#9;&#9;IDEFrameworks-17535000000000000~23 (12B45b) App Item ID:&#9;&#9;&#9;&#9;&#9; 497799835 App External ID:&#9;&#9;&#9; 838360538 Code Type:&#9;&#9;&#9;&#9;&#9;&#9; X86-64 (Native) Parent Process:&#9;&#9;&#9;&#9;??? [1] Responsible:&#9;&#9;&#9;&#9;&#9; Xcode [834] User ID:&#9;&#9;&#9;&#9;&#9;&#9;&#9; 501 Date/Time:&#9;&#9;&#9;&#9;&#9;&#9; 2020-12-07 17:22:11.231 +0100 OS Version:&#9;&#9;&#9;&#9;&#9;&#9;macOS 11.0.1 (20B29) Report Version:&#9;&#9;&#9;&#9;12 Bridge OS Version:&#9;&#9; 3.0 (14Y908) Anonymous UUID:&#9;&#9;&#9;&#9;7A3F67B1-D68A-4230-40B2-B7EE13B51792 Sleep/Wake UUID:&#9;&#9;&#9; 4913FE52-7DB5-45E0-9396-EFBA2ADD0B5C Time Awake Since Boot: 47000 seconds Time Since Wake:&#9;&#9;&#9; 5900 seconds System Integrity Protection: enabled Crashed Thread:&#9;&#9;&#9;&#9;17&#9;Dispatch queue: ConcurrentQueue: -[IDEDistributionPackagingStepViewController viewDidInstall]_block_invoke Exception Type:&#9;&#9;&#9;&#9;EXC_CRASH (SIGABRT) Exception Codes:&#9;&#9;&#9; 0x0000000000000000, 0x0000000000000000 Exception Note:&#9;&#9;&#9;&#9;EXC_CORPSE_NOTIFY Application Specific Information: Possibly stale failure hints from 2020-12-07 16:21:03 +0000: &#9;0: Calling block provided by: &#9;0&#9; DVTDispatchAsync (in DVTFoundation) &#9;1&#9; __56-[IDEArchiveProductSource updateArchivesWithCompletion:]_block_invoke_2 (in IDEProducts) &#9;2&#9; DVT_CALLING_CLIENT_BLOCK (in DVTFoundation) &#9;3&#9; __DVTDispatchAsync_block_invoke (in DVTFoundation) &#9;4&#9; _dispatch_call_block_and_release (in libdispatch.dylib) &#9;5&#9; _dispatch_client_callout (in libdispatch.dylib) &#9;6&#9; _dispatch_continuation_pop (in libdispatch.dylib) &#9;7&#9; _dispatch_async_redirect_invoke (in libdispatch.dylib) &#9;8&#9; _dispatch_root_queue_drain (in libdispatch.dylib) &#9;9&#9; _dispatch_worker_thread2 (in libdispatch.dylib) 10&#9; _pthread_wqthread (in libsystem_pthread.dylib) 11&#9; start_wqthread (in libsystem_pthread.dylib) ProductBuildVersion: 12B45b ASSERTION FAILURE in /Library/Caches/com.apple.xbs/Sources/DVTFrameworks/DVTFrameworks-17518/DVTFoundation/FilePaths/DVTFilePath.m:912 Details:&#9;url should be an instance inheriting from NSURL, but it is nil Object:&#9; <DVTFilePath> Method:&#9; +filePathForFileURL: Thread:&#9; <NSThread: 0x7fa6c43458e0>{number = 4468, name = (null)} Open FDs: 115/7168 Hints:&#9; &#9;0: Calling block provided by: &#9;0&#9; DVTDispatchAsync (in DVTFoundation) &#9;1&#9; DVTAsyncPerformBlock (in DVTFoundation) &#9;2&#9; -[IDEDistributionPackagingStepViewController viewDidInstall] (in IDEKit) &#9;3&#9; -[DVTViewController _viewDidInstall] (in DVTViewControllerKit) &#9;4&#9; -[_DVTViewController_ViewLifecycleInterpositions viewDidMoveToWindow] (in DVTViewControllerKit) &#9;5&#9; -[NSView _setWindow:] (in AppKit) &#9;6&#9; -[NSView addSubview:] (in AppKit) &#9;7&#9; -[NSView setSubviews:] (in AppKit) &#9;8&#9; -[DVTBorderedView setContentView:] (in DVTUserInterfaceKit) &#9;9&#9; -[IDEDistributionAssistantWindowController setDistributionStepViewController:] (in IDEKit) 10&#9; -[NSObject(NSKeyValueObservingPrivate) _changeValueForKeys:count:maybeOldValuesDict:maybeNewValuesDict:usingBlock:] (in Foundation) 11&#9; -[NSObject(NSKeyValueObservingPrivate) _changeValueForKey:key:key:usingBlock:] (in Foundation) 12&#9; _NSSetObjectValueAndNotify (in Foundation) 13&#9; -[IDEDistributionAssistantWindowController next:] (in IDEKit) 14&#9; __79-[IDEDistributionAutomaticSigningAssetsStepViewController _locateSigningAssets]_block_invoke_2 (in IDEKit) 15&#9; DVT_CALLING_CLIENT_BLOCK (in DVTFoundation) 16&#9; ___DVTAsyncPerformBlockOnMainRunLoop_block_invoke (in DVTFoundation) 17&#9; CFRUNLOOP_IS_CALLING_OUT_TO_A_BLOCK (in CoreFoundation) 18&#9; __CFRunLoopDoBlocks (in CoreFoundation) 19&#9; __CFRunLoopRun (in CoreFoundation) 20&#9; CFRunLoopRunSpecific (in CoreFoundation) 21&#9; RunCurrentEventLoopInMode (in HIToolbox) 22&#9; ReceiveNextEventCommon (in HIToolbox) 23&#9; _BlockUntilNextEventMatchingListInModeWithFilter (in HIToolbox) 24&#9; _DPSNextEvent (in AppKit) 25&#9; -[NSApplication(NSEvent) _nextEventMatchingEventMask:untilDate:inMode:dequeue:] (in AppKit) 26&#9; -[DVTApplication nextEventMatchingMask:untilDate:inMode:dequeue:] (in DVTKit) 27&#9; -[NSApplication run] (in AppKit) 28&#9; NSApplicationMain (in AppKit) 29&#9; start (in libdyld.dylib) Backtrace: &#9;0&#9; -[IDEAssertionHandler handleFailureInMethod:object:fileName:lineNumber:assertionSignature:messageFormat:arguments:] (in IDEKit) &#9;1&#9; _DVTAssertionHandler (in DVTFoundation) &#9;2&#9; _DVTAssertionFailureHandler (in DVTFoundation) &#9;3&#9; +[DVTFilePath filePathForFileURL:] (in DVTFoundation) &#9;4&#9; -[IDEDistributionSymbolsStep runWithError:] (in IDEFoundation) &#9;5&#9; -[IDEDistributionProcessingPipeline process:] (in IDEFoundation) &#9;6&#9; -[IDEDistributionPackagingStepViewController _runPipeline] (in IDEKit) &#9;7&#9; __60-[IDEDistributionPackagingStepViewController viewDidInstall]_block_invoke_2 (in IDEKit) &#9;8&#9; DVT_CALLING_CLIENT_BLOCK (in DVTFoundation) &#9;9&#9; __DVTDispatchAsync_block_invoke (in DVTFoundation) 10&#9; _dispatch_call_block_and_release (in libdispatch.dylib) 11&#9; _dispatch_client_callout (in libdispatch.dylib) 12&#9; _dispatch_continuation_pop (in libdispatch.dylib) 13&#9; _dispatch_async_redirect_invoke (in libdispatch.dylib) 14&#9; _dispatch_root_queue_drain (in libdispatch.dylib) 15&#9; _dispatch_worker_thread2 (in libdispatch.dylib) 16&#9; _pthread_wqthread (in libsystem_pthread.dylib) 17&#9; start_wqthread (in libsystem_pthread.dylib) abort() called Application Specific Signatures: (url) != nil ...
10
0
3.1k
Dec ’20
Scroll event is called only for every second swipe when wantsScrollEventsForSwipeTracking(on:) is enabled
In my project I have text view filling up the whole window and with a swipe left or right I want to slide a sidebar in or out. I implemented wantsScrollEventsForSwipeTracking(on:) and scrollWheel(with:) in the main ViewController, but I am observing some weird behaviour: when I swipe once scrollWheel(with:) is called repeatedly until the swipe momentum has finished, but if I swipe again, either while there is still momentum or even if it has already finished, that method is not called (regardless whether I swipe left or right). Swiping a third time works again. This is a real problem because this would always require two swipes after the first one. Here are a sample project and the steps to reproduce the issue: https://www.icloud.com/iclouddrive/0ISqzjoxbpvvF3_Wv1ji8sR_w#problem3 Run the attached project. Inside the text view, swipe left. The console will print some scroll event details. When the scroll momentum has finished (nothing is printed anymore in the console), swipe left again. Now nothing will be printed out in the console. If you repeat once more, it will work again. Now you can repeat step 3 with a swipe to the right instead of left, the same thing will happen. You can also try without waiting until the scroll momentum has finished. If you swipe again while the console is still printing the momentum events (left or right doesn't matter), the momentum will be immediately stopped, but the new swipe is also not forwarded.
0
0
249
Sep ’20
Text view resizes weirdly in split view when window has full size content view
In my project I have a split view that contains a text view and a collapsible sidebar to its right. When the sidebar is animated in and out quickly repeatedly (i.e. before the previous animation finishes), the space occupied by the text inside the text view shrinks and leaves the remaining space in the text view blank. This doesn't happen if I disable the full size content view or the sidebar is added without the animation. Here are a sample project and the steps to reproduce the issue: https://www.icloud.com/iclouddrive/0zKg8hqwLpV682-6LuxeykZLw#problem2 Run the project. Press Cmd-L to add a view to the right of the split view. Repeat this step about 10 times: press Cmd-L twice as fast as possible, so that the second press happens before the collapse animation finishes. About after each second of these 10 steps the text view occupies less space horizontally which is left blank.
3
0
388
Sep ’20
Views inside split view resize in real time only when window has full size content view
I noticed that when a window has full size content view, the views inside a scroll view are resized smoothly when adding a new split view item (i.e. in real time while the animation is running), but when the window has not full size content view, only the split view divider animates to its new position, while right from the beginning of the animation the views are instantly drawn as if the animation had already finished. Is there a setting that allows me to turn these smooth animations on even if I don't use a full size content view? Here is a sample project and steps to reproduce the issue: https://www.icloud.com/iclouddrive/0zKg8hqwLpV682-6LuxeykZLw#problem2 Run the project. Press Cmd-L to add a view to the right of the split view. The text view will resize smoothly. Now deactivate the full size content view for the window in the storyboard and relaunch the project. Press Cmd-L. The text view will resize instantly at the start of the animation, and only the split view separator moves smoothly to its final position.
0
0
282
Sep ’20
EXC_BAD_ACCESS (code=2) when NSTextField in NSOutlineView has a connected IBOutlet action
I'm transitioning one of my projects from using .xib files to a single .storyboard file, and this one issue is driving me crazy. It seems to happen only in the project version with the storyboard. Every time I launch the app, the EXC_BAD_ACCESS error happens where the AppDelegate is declared. I could isolate the problem which can now be reproduced every second or third time when launching the following sample project: https://www.icloud.com/iclouddrive/0Vx_ZOrGuD7U0S9u_8dJz-_0A#problem It seems that when removing the connection from the text field in the outline view to its action textFieldAction in ViewController, the crash doesn't happen anymore. How is this possible?
4
0
627
Sep ’20
getattrlistbulk lists files with underscore prefix on exFAT
It seems that on exFAT macOS creates a file with an underscore prefix for each file to hold some metadata (I guess). When enumerating a directory with FileManager, these files are not listed, but they are when using getattrlistbulk. Is there a way to mimick the FileManager behaviour? Unfortunately I have to resort to getattrlistbulk because FileManager doesn't allow me to efficiently get a file's inode number.
5
0
548
Aug ’20
Swift string interpolation produces string that takes very long to insert in a dictionary
Under some conditions, string interpolation produces a string that is way slower to use as a dictionary key than a string produced with String(format:). Take the following code: var map = [String: String]() let start = Date() for _ in 0..<100000 {     var s = "asdf"     s = (s as NSString).appendingPathComponent("")     s = transform(s)     s = (s as NSString).substring(from: 1)     map[s] = s } print(-start.timeIntervalSinceNow) func transform(_ s: String) -> String {     return "\(s)/\(s)" //    return String(format: "%@/%@", s, s) } On my Mac I get the time interval 0.69 seconds printed out in the console (when using the string interpolation), but when commenting out line 13 and uncommenting line 14 (so that we use String(format:)) I get a 0.33 seconds time interval, less than half the time. Curiously, whenever uncommenting line 5 or line 7, string interpolation is faster. This took me quite a lot of time to figure out, since I would expect both methods to produce the same kind of string, but string interpolation to be always faster. Does anybody know why?
7
0
1.1k
Aug ’20