I use NSTextView in my app, and I am getting a LOT of crashes when I’m running the app with the debugger attached, and it all points to this spell checker in NSTextView. The crash happens as soon as the textview shows the ‘word completion’ option. If I turn off the “Continuous Spell Checking” option, it works fine, and it doesn’t crash.
The exception reason given is: __NSCFString * "NSMutableRLEArray objectAtIndex:effectiveRange:: Out of bounds"
This is what the stack trace looks like in Xcode:
Thread 1 Queue : com.apple.main-thread (serial)
#0 0x000000018335eb38 in objc_exception_throw ()
#1 0x0000000184e01910 in -[NSRLEArray objectAtIndex:effectiveRange:] ()
#2 0x0000000184e519a8 in -[NSMutableAttributedString addAttribute:value:range:] ()
#3 0x000000018818086c in -[NSText(NSTextAccessibilityPrivate) accessibilityAXAttributedStringForCharacterRange:parent:] ()
#4 0x0000000187f576b0 in -[NSAccessibilityAttributeAccessorInfo getParameterizedAttributeValue:forObject:withParameter:] ()
#5 0x0000000187f591a8 in ___NSAccessibilityEntryPointValueForAttributeWithParameter_block_invoke.799 ()
#6 0x0000000187f5458c in NSAccessibilityPerformEntryPointObject ()
#7 0x0000000187f56190 in NSAccessibilityEntryPointValueForAttributeWithParameter ()
#8 0x0000000187cb6a3c in CopyParameterizedAttributeValue ()
#9 0x00000002327057ac in ___lldb_unnamed_symbol4511 ()
#10 0x0000000232705854 in ___lldb_unnamed_symbol4512 ()
#11 0x000000018a5b3670 in _AXXMIGCopyParameterizedAttributeValue ()
#12 0x000000018a5d4894 in _XCopyParameterizedAttributeValue ()
#13 0x000000018a592ff8 in mshMIGPerform ()
#14 0x000000018382a250 in __CFRUNLOOP_IS_CALLING_OUT_TO_A_SOURCE1_PERFORM_FUNCTION__ ()
#15 0x000000018382a178 in __CFRunLoopDoSource1 ()
#16 0x0000000183828b78 in __CFRunLoopRun ()
#17 0x0000000183827c58 in CFRunLoopRunSpecific ()
#18 0x000000018f2bc27c in RunCurrentEventLoopInMode ()
#19 0x000000018f2bf4e8 in ReceiveNextEventCommon ()
#20 0x000000018f44a484 in _BlockUntilNextEventMatchingListInModeWithFilter ()
#21 0x000000018774fab4 in _DPSNextEvent ()
#22 0x00000001880ee5b0 in -[NSApplication(NSEventRouting) _nextEventMatchingEventMask:untilDate:inMode:dequeue:] ()
#23 0x00000001884b836c in -[NSCorrectionPanel _interceptEvents] ()
#24 0x00000001884b8f30 in -[NSCorrectionPanel showPanelAtRect:inView:primaryString:alternativeStrings:forType:completionHandler:] ()
#25 0x00000001880c91ec in -[NSSpellChecker showCorrectionIndicatorOfType:range:primaryString:alternativeStrings:forStringInRect:view:completionHandler:] ()
#26 0x00000001880ca0c0 in -[NSSpellChecker _showInlinePredictionForReplacingRange:markedRange:string:withString:view:client:lastReplacementRange:completeWordIndexes:resultDictionary:completionHandler:] ()
#27 0x00000001880cb26c in -[NSSpellChecker showCompletionForCandidate:selectedRange:offset:inString:rect:view:client:completionHandler:] ()
#28 0x0000000188303a94 in -[NSTextCheckingController handleCompletionFromCandidates:forSelectedRange:offset:inAnnotatedString:rect:view:] ()
#29 0x00000001882f9054 in -[NSTextCheckingController viewForRange:completionHandler:] ()
#30 0x00000001883041c8 in __60-[NSTextCheckingController handleCandidates:sequenceNumber:]_block_invoke ()
#31 0x000000018789105c in -[NSTextCheckingController annotatedSubstringForProposedRange:wrap:completionHandler:failureHandler:] ()
#32 0x0000000187890da4 in -[NSTextCheckingController annotatedSubstringForProposedRange:completionHandler:] ()
#33 0x00000001878927d4 in -[NSTextCheckingController annotatedSubstringForSelectedRangeWithCompletionHandler:] ()
#34 0x0000000188304134 in -[NSTextCheckingController handleCandidates:sequenceNumber:] ()
#35 0x00000001883067e0 in ___NSRunLoopTimerCreateWithHandler_block_invoke ()
#36 0x0000000183842e14 in __CFRUNLOOP_IS_CALLING_OUT_TO_A_TIMER_CALLBACK_FUNCTION__ ()
#37 0x0000000183842ad4 in __CFRunLoopDoTimer ()
#38 0x0000000183842610 in __CFRunLoopDoTimers ()
#39 0x0000000183828a18 in __CFRunLoopRun ()
#40 0x0000000183827c58 in CFRunLoopRunSpecific ()
#41 0x000000018f2bc27c in RunCurrentEventLoopInMode ()
#42 0x000000018f2bf4e8 in ReceiveNextEventCommon ()
#43 0x000000018f44a484 in _BlockUntilNextEventMatchingListInModeWithFilter ()
#44 0x000000018774fab4 in _DPSNextEvent ()
#45 0x00000001880ee5b0 in -[NSApplication(NSEventRouting) _nextEventMatchingEventMask:untilDate:inMode:dequeue:] ()
#46 0x0000000187742c64 in -[NSApplication run] ()
#47 0x000000018771935c in NSApplicationMain ()
If I run the debug version of the app without the debugger, it works fine as well. In fact, if I run the app without "All Objective-C Exceptions" breakpoint, it also works fine. So it seems like some framework issue, which is making it hard to run and test my app.
What’s the reason for this, and is this an issue I should be worried about for when the app is available to my users?
Selecting any option will automatically load the page
Post
Replies
Boosts
Views
Activity
Hi,
I am setting up the iPadOS26 Menu Bar, and it comes with some existing menu items that don't make sense for my app. For example, under "File" menu, there are options for New Window, Duplicate, Move, Rename and Export that I would like to remove (which keeping the Close Window option).
What's the best way to do this?
Topic:
UI Frameworks
SubTopic:
UIKit
Hi,My app supports 2 different share extensions, and before iOS13, it was easy to tell them apart, because I would specify this in the Bundle Display Name (CFBundleDisplayName in info.plist). With iOS13, it seems to only show the name of the app for both share extensions, and not the Display Name specified, which will make it confusing to users if they see the same app icon + name in the share sheet.I filed a Radar for this, but it was returned with "Resolution:Investigation complete - Change required from 3rd party" ... but it didn't specify what kind of change to make.Anyone know how to customize the name of the share extension going forward?Thanks.
I have an existing iOS app with shortcuts support, and I am trying to bring the same shortcuts to my Mac app in macOS Monterey. In my case, I have added the same intents definition file to my Mac target app, added "Intents eligible for in-app handling" to my Info.plust file and added the intent names, and made sure all the intent handling code is part of both iOS and Mac targets. Still, when I build and run the app on macOS Monterey, the new shortcuts don't show in the shortcut editor at all. I've tried closing and restarting the Shortcuts app, but no luck. The build logs do show the intents being built, but they're just not showing up in the Shortcuts app.
I tried 'donating' one of the intents in my Mac app code, but got an error:
Cannot donate interaction with intent that has no valid shortcut types
Not sure what to try to make it work.
Thanks.
Topic:
App & System Services
SubTopic:
Automation & Scripting
Tags:
wwdc21-10232
App Intents
Shortcuts
Hi,
I can't seem to find a way to view the Build Timeline with Xcode 14. I see a "Recent Build Timeline" option in the drop-down when I click on the top-left button in the editor (where "Recent Files" lives), but it doesn't do anything.
Do I have to build the app in some special way to make this visible?
I am running into an exception whenever I try to open the app's window in visionOS simulator. The exception error message says:
"Thread 1: "Error in UIKit client: window visibility must match its layer visibility!""
This is the same code that runs just fine on iOS where I setup the app's window and tab bar controller in code:
- (BOOL)application:(UIApplication *)application willFinishLaunchingWithOptions:(NSDictionary *)launchOptions {
// Setup the UI - Override point for customization after app launch
UIWindowScene *firstScene = (UIWindowScene *) [[[[UIApplication sharedApplication] connectedScenes] allObjects] firstObject];
self.mainWindow = [[UIWindow alloc] initWithWindowScene:firstScene];
self.mainWindow.backgroundColor = [UIColor systemBackgroundColor];
self.tabController = [[UITabBarController alloc] init];
[self.tabController definesPresentationContext];
self.mainWindow.rootViewController = self.tabController;
[self.mainWindow makeKeyAndVisible];
// setup the tab bar later
The exception comes from the makeKeyAndVisible line. I'm not sure what I need to do differently for a visionOS app to make it work.
I'm using Xcode 15.1 Beta 2.
Hi,
WWDC24 videos have a lot of references to an "Image Playground" API, and the "What's New in AppKit" session even shows it in action, with a "ImagePlaygroundViewController". However, there doesn't seem to be any access to the new API, even with Xcode 16.2 beta. Am I missing something, or is that 'coming later'?
Hi,
On macOS, there seems to be a NSTableViewDiffableDataSource and an NSCollectionViewDiffableDataSource, but there seems to be nothing for NSOutlineView. Is it possible to somehow use NSTableViewDiffableDataSource with NSOutlineView that I'm missing?
If not, is it possible to use NSTableView with NSTableViewDiffableDataSource to show a 'table' with section headers?
I just downloaded Xcode26, and am trying to download the new simulator to be able to run and test my app. But the downloads folder just shows that it's stuck on "Fetching download information ..." even 15 minutes after it started. I tried restarting Xcode but didn't help. Internet connection is good. Any tips to get it working?
Hi,
I just updated my machine to macOS 15, and while developing and running my app (with Xcode), I keep getting messages about my app "would like to access data from other apps". This happens even from Xcode Previews, so it's pretty annoying. My production app doesn't seem to be affected by this problem; the system prompt just pops when running the debug version.
I came across something about App Groups in macOS and how something has changed in macOS15 regarding system permissions. I use the "group.xxx" prefix in my macOS app, without the team prefix. Is that the problem here? But why is my production app working fine, but the development app is triggering the prompt repeatedly?
Would love any feedback or workarounds.
Thanks.
Hi,
I have an existing Mac app that stores some important values in the keychain. I am working on an update for the app, which was working fine while I was testing with debug builds. But when I build the app for Release and test the update using TestFlight, on trying to access the keychain item, I get prompted by the system:
"MyApp wants to use your confidential information stored in "SyncSettingsValue" in your keychain"
And the user now has to enter their password and click on "Allow", "Always Allow" or Deny. Obviously this is a really bad experience, and clicking on Deny will stop many features for the user.
Why is this happening? I've updated the app 100s of times before and I've never had this problem. I don't believe I'm messing around with any certificate or provisioning profile since the last update, which was only a few weeks ago.
How do I find out what is causing the problem here? Or is this a TestFlight issue that won't happen to users when they update through the App Store?
Hi,
I am trying to build my project with Xcode12, and I am running into this error:
<unknown>:0: error: module compiled with Swift 5.2.4 cannot be imported by the Swift 5.3 compiler: /Users/zs/Documents/CJ/branches/CJ-400/SimpleList/Carthage/Build/iOS/PhoneNumberKit.framework/Modules/PhoneNumberKit.swiftmodule/x86_64-apple-ios-simulator.swiftmodule
Not sure how to resolve this. I've tried:
cleaning the build directory and building again
cleaning build dir, plus deleting DerivedData, and restarting Xcode and building again
running 'carthage update PhoneNumberKit --platform iOS', and doing another clean build
changing the Xcode command-line tool to Xcode 12, and building again
None of these have worked. What else can I try? Why am I getting this error? Would love some more information
Hi,
I am getting a crash report from a user, where they get an application crash when they open a CSV file on their device. I use the standard DataFrame(contentsOfCSVFile: fileURL, options: options) initializer to create a DataFrame, but that's where it's crashing, even though it's inside a try-catch block:
public func loadInitialCSVData(withURL fileURL: URL) throws -> DataFrame {
let options = CSVReadingOptions(hasHeaderRow: true, delimiter: ",")
do {
let dataFrame = try DataFrame(contentsOfCSVFile: fileURL, options: options)
} catch {
// log error here - doesn't get here
}
This is from the crash report:
Exception Type: SIGTRAP
Exception Codes: TRAP_BRKPT at 0x21e02be38
Crashed Thread: 0
Thread 0 Crashed:
0 TabularData 0x000000021e02be38 __swift_project_boxed_opaque_existential_1 + 9488
1 TabularData 0x000000021e099d64 __swift_memcpy17_8 + 4612
2 TabularData 0x000000021e099958 __swift_memcpy17_8 + 3576
3 TabularData 0x000000021e09935c __swift_memcpy17_8 + 2044
4 Contacts Journal CRM 0x000000010433f614 Contacts_Journal_CRM.CJCSVHeaderMapper.loadInitialCSVData(withURL: Foundation.URL) throws -> TabularData.DataFrame (CJCSVHeaderMapper.swift:26)
5 Contacts Journal CRM 0x00000001043009d8 (extension in Contacts_Journal_CRM):__C.MacContactsViewController.handleSelectedCSVFileForURL(selectedURL: Foundation.URL) -> () (MacContactsViewControllerExtension.swift:28)
6 Contacts Journal CRM 0x0000000104301e64 @objc (extension in Contacts_Journal_CRM):__C.MacContactsViewController.handleSelectedCSVFileForURL(selectedURL: Foundation.URL) -> () (<compiler-generated>:0)
7 Contacts Journal CRM 0x0000000104222c94 __51-[MacContactsViewController importCSVFileSelected:]_block_invoke (MacContactsViewController.m:954)
8 AppKit 0x00000001bbe8f294 -[NSSavePanel didEndPanelWithReturnCode:] + 84`
I can't diagnose the crash, because it doesn't have more information. I don't have access to the CSV file currently either, so I don't know what else I can do to prevent it.
What could possibly be causing this crash? Does it not matter that I am also trying to catch the errors it's throwing, or can the app crash because of some internal reasons with the framework?
Hi,
When I login to App Store connect, I get a banner message saying "Review the updated Paid Applications Schedule":
In order to update your existing apps, create new in-app purchases, and submit new apps to the App Store, the user with the Legal role (Account Holder) must review and accept the Paid Applications Schedule (Schedule 2 to the Apple Developer Program License Agreement) in the Agreements, Tax, and Banking module.
When I click the link, select "View and Agree Terms", and select the checkbox and select the "Agree" button to accept the terms, I get an error message:
We are currently unable to process your request. Please try again later.
This has been happening for the past 2 days now. What should I try to do to overcome this problem? I'll file a bug with Apple, but it takes them many days to respond to these issues usually.
I have a UITableView which contains a UICollectionView in the first row. It used to work fine in iOS17, but now I get a crash when running with Xcode 16 / iOS18 beta:
Expected dequeued view to be returned to the collection view in preparation for display. When the collection view's data source is asked to provide a view for a given index path, ensure that a single view is dequeued and returned to the collection view. Avoid dequeuing views without a request from the collection view. For retrieving an existing view in the collection view, use -[UICollectionView cellForItemAtIndexPath:] or -[UICollectionView supplementaryViewForElementKind:atIndexPath:]
This is my UITableView delegate call:
AddEditDataCell *cell = nil;
if (indexPath.section == 0) {
if (indexPath.row == 0) {
AddEditDataContactsCell *contactNameCell = (AddEditDataContactsCell *)[self cellForContactNamesCollectionAtIndexPath:indexPath tableView:tableView];
return contactNameCell;
- (AddEditDataContactsCell *)cellForContactNamesCollectionAtIndexPath:(NSIndexPath *)indexPath tableView:(UITableView *)tableView {
AddEditDataContactsCell *contactsCell = (AddEditDataContactsCell *)[self.tableView dequeueReusableCellWithIdentifier:@"ContactsCell" forIndexPath:indexPath];
if (self.collectionNameCell == nil) {
self.collectionNameCell = [contactsCell.collectionView dequeueReusableCellWithReuseIdentifier:@"LogContactNameCollectionCellIdentifier" forIndexPath:[NSIndexPath indexPathForRow:0 inSection:0]];
contactsCell.nameCellDelegate = self;
}
contactsCell.frame = CGRectZero;
[contactsCell setNeedsLayout];
[contactsCell.collectionView reloadData];
contactsCell.collectionViewHeightConstraint.constant = contactsCell.collectionView.collectionViewLayout.collectionViewContentSize.height;
[contactsCell.collectionView.collectionViewLayout invalidateLayout];
return contactsCell;
}
Topic:
UI Frameworks
SubTopic:
UIKit