Post

Replies

Boosts

Views

Activity

Reply to Xcode 16 warning about missing symbols of static framework
The only way out of it was to create a build post-action script to generate the missing dsym file. Here is the gist of the script: set -euo pipefail if [ -z "${ARCHIVE_PATH:-}" ]; then exit 0 fi APP_PATH="$ARCHIVE_PATH/Products/Applications/App_Product_Name.app" if [ ! -d "$APP_PATH/Contents" ]; then exit 0 fi BIN="$APP_PATH/Contents/Frameworks/Framework_Name.framework/Framework_Name" OUT="$ARCHIVE_PATH/dSYMs/Framework_Name.framework.dSYM" OUT_DWARF="$OUT/Contents/Resources/DWARF/Framework_Name" if [ ! -f "$BIN" ]; then exit 0 fi if [ ! -f "$OUT_DWARF" ]; then mkdir -p "$ARCHIVE_PATH/dSYMs" rm -rf "$OUT" xcrun dsymutil "$BIN" -o "$OUT" fi if [ ! -f "$OUT_DWARF" ]; then exit 1 fi BIN_UUIDS="$(xcrun dwarfdump --uuid "$BIN" | awk '{print $2}' | sort)" DSYM_UUIDS="$(xcrun dwarfdump --uuid "$OUT_DWARF" | awk '{print $2}' | sort)" if [ "$BIN_UUIDS" != "$DSYM_UUIDS" ]; then exit 1 fi
Mar ’26
Reply to Xcode 16 warning about missing symbols of static framework
I am seeing a similar issue, but only for my Mac Catalyst archive on XCode 26. My app is a SwiftUI application that embeds an Objective-C framework built from a separate Xcode project. The framework binary itself does have UUIDs, but when I inspect the .xcarchive, the corresponding framework dSYM is missing from the archive’s dSYMs folder. What is confusing is that this does not happen for the iOS build. I use the same framework target, and when I archive the iOS app and upload to TestFlight, I do not get the warning. The problem only appears when I archive the Mac Catalyst version. So in summary: • The embedded framework binary is present in the archive • The framework executable has valid UUIDs • The app archive’s dSYMs folder does not contain the matching dSYM for that embedded framework • This only happens for Mac Catalyst • The same setup works correctly for iOS Has anyone seen Catalyst archives skip generating or packaging dSYMs for embedded frameworks, even though the binary itself contains debug information?
Mar ’26
Reply to Drag & Drop with NSTableViewDiffableDataSource
It turns out that you need to subclass NSTableViewDiffableDataSource and implement the drag and drop API in that subclass. It's kinda weird, but that is what needs to be done. In my case, what I did was this: implement all my drag and drop API that I usually would in my MyViewController subclass NSTableViewDiffableDataSource to MyDiffableDataSource added delegate APIs to MyDiffableDataSource that would ask the delegate for the drag and drop code. For example, it would do something like this: in the MyDiffableDataSource.h file I would have this: @class MyDiffableDataSource; @protocol MyDiffableDataSourceDelegate <NSObject> - (nullable id <NSPasteboardWriting>)tableView:(NSTableView *)tableView                         pasteboardWriterForRow:(NSInteger)row; - (void)tableView: (NSTableView *)tableView   draggingSession: (NSDraggingSession *)session  willBeginAtPoint: (NSPoint)screenPoint     forRowIndexes: (NSIndexSet *)rowIndexes; - (NSDragOperation)tableView: (NSTableView *)tableView                 validateDrop: (id <NSDraggingInfo>)draggingInfo                  proposedRow: (NSInteger)row        proposedDropOperation: (NSTableViewDropOperation)dropOperation; - (BOOL)tableView: (NSTableView *)tableView        acceptDrop: (id <NSDraggingInfo>)draggingInfo               row: (NSInteger)row     dropOperation: (NSTableViewDropOperation)dropOperation; - (void)tableView: (NSTableView *)tableView   draggingSession: (NSDraggingSession *)session      endedAtPoint: (NSPoint)screenPoint         operation: (NSDragOperation)operation; @end @interface MyDiffableDataSource : NSTableViewDiffableDataSource @property (weak, nonatomic, readwrite) id <MyDiffableDataSourceDelegate> delegate; @end In the MyDiffableDataSource.m file, it would do something like this: - (nullable id <NSPasteboardWriting>)tableView:(NSTableView *)tableView                         pasteboardWriterForRow:(NSInteger)row {     if ([self.delegate respondsToSelector: @selector(tableView:pasteboardWriterForRow:)]){         return [self.delegate tableView: tableView                  pasteboardWriterForRow: row];     }     return nil; } . . . etc I did not want to have drag and drop code in different classes, which I why I implemented step 2 and 3 using delegate messaging. Of course, I would need MyViewController to be set as the delegate of MyDiffableDataSource. Too bad there is no real documentation that easily goes over this. You have to guess it when reading that NSTableViewDIffableDataSource conforms to NSTableViewDataSource. EH
Topic: UI Frameworks SubTopic: AppKit Tags:
Jul ’21
Reply to Xcode 16 warning about missing symbols of static framework
The only way out of it was to create a build post-action script to generate the missing dsym file. Here is the gist of the script: set -euo pipefail if [ -z "${ARCHIVE_PATH:-}" ]; then exit 0 fi APP_PATH="$ARCHIVE_PATH/Products/Applications/App_Product_Name.app" if [ ! -d "$APP_PATH/Contents" ]; then exit 0 fi BIN="$APP_PATH/Contents/Frameworks/Framework_Name.framework/Framework_Name" OUT="$ARCHIVE_PATH/dSYMs/Framework_Name.framework.dSYM" OUT_DWARF="$OUT/Contents/Resources/DWARF/Framework_Name" if [ ! -f "$BIN" ]; then exit 0 fi if [ ! -f "$OUT_DWARF" ]; then mkdir -p "$ARCHIVE_PATH/dSYMs" rm -rf "$OUT" xcrun dsymutil "$BIN" -o "$OUT" fi if [ ! -f "$OUT_DWARF" ]; then exit 1 fi BIN_UUIDS="$(xcrun dwarfdump --uuid "$BIN" | awk '{print $2}' | sort)" DSYM_UUIDS="$(xcrun dwarfdump --uuid "$OUT_DWARF" | awk '{print $2}' | sort)" if [ "$BIN_UUIDS" != "$DSYM_UUIDS" ]; then exit 1 fi
Replies
Boosts
Views
Activity
Mar ’26
Reply to Xcode 16 warning about missing symbols of static framework
I am seeing a similar issue, but only for my Mac Catalyst archive on XCode 26. My app is a SwiftUI application that embeds an Objective-C framework built from a separate Xcode project. The framework binary itself does have UUIDs, but when I inspect the .xcarchive, the corresponding framework dSYM is missing from the archive’s dSYMs folder. What is confusing is that this does not happen for the iOS build. I use the same framework target, and when I archive the iOS app and upload to TestFlight, I do not get the warning. The problem only appears when I archive the Mac Catalyst version. So in summary: • The embedded framework binary is present in the archive • The framework executable has valid UUIDs • The app archive’s dSYMs folder does not contain the matching dSYM for that embedded framework • This only happens for Mac Catalyst • The same setup works correctly for iOS Has anyone seen Catalyst archives skip generating or packaging dSYMs for embedded frameworks, even though the binary itself contains debug information?
Replies
Boosts
Views
Activity
Mar ’26
Reply to Add 'PDF Services' symlink in ~/Library directory in SwiftUI macOS Catalyst application
Works great, Thanks! I updated the project file to a working state that others can use.
Replies
Boosts
Views
Activity
Dec ’25
Reply to SwiftUI Table on macOS hanging with large number of rows
Maybe this Dropbox link is better: https://www.dropbox.com/scl/fi/i9usljzvqvae8lifxv3yj/TableStressorTestMacOS.zip?rlkey=agupzzdm9wr8v96lbuh9mm3mg&st=r4qtvjvl&dl=0
Topic: UI Frameworks SubTopic: SwiftUI Tags:
Replies
Boosts
Views
Activity
Oct ’24
Reply to SwiftUI Table on macOS hanging with large number of rows
Sorry, iCloud public sharing is not very obvious. in any case, the Developer Tech Support is: Case-ID: 9474931
Topic: UI Frameworks SubTopic: SwiftUI Tags:
Replies
Boosts
Views
Activity
Oct ’24
Reply to SwiftUI Table on macOS hanging with large number of rows
I'll try again: https://www.icloud.com/iclouddrive/08ci-kngZMd8_d30RGUhPs__w#TableStressorTestMacOS
Topic: UI Frameworks SubTopic: SwiftUI Tags:
Replies
Boosts
Views
Activity
Oct ’24
Reply to SwiftUI Table on macOS hanging with large number of rows
Test Application here (I'm not certain how to make a public link on iCloud, so reply if it does not work): https://www.icloud.com/iclouddrive/0867sf1ayePj8vd2gZblEL0UA#TableStressorTestMacOS
Topic: UI Frameworks SubTopic: SwiftUI Tags:
Replies
Boosts
Views
Activity
Oct ’24
Reply to Drag and Drop using SwiftUI
Have you figured out how to overcome the single item limitation on macOS? I'm on macOS 14.5 and it still seems to have the single-item-drag bug.
Topic: UI Frameworks SubTopic: SwiftUI Tags:
Replies
Boosts
Views
Activity
Jul ’24
Reply to Drag & Drop with NSTableViewDiffableDataSource
It turns out that you need to subclass NSTableViewDiffableDataSource and implement the drag and drop API in that subclass. It's kinda weird, but that is what needs to be done. In my case, what I did was this: implement all my drag and drop API that I usually would in my MyViewController subclass NSTableViewDiffableDataSource to MyDiffableDataSource added delegate APIs to MyDiffableDataSource that would ask the delegate for the drag and drop code. For example, it would do something like this: in the MyDiffableDataSource.h file I would have this: @class MyDiffableDataSource; @protocol MyDiffableDataSourceDelegate <NSObject> - (nullable id <NSPasteboardWriting>)tableView:(NSTableView *)tableView                         pasteboardWriterForRow:(NSInteger)row; - (void)tableView: (NSTableView *)tableView   draggingSession: (NSDraggingSession *)session  willBeginAtPoint: (NSPoint)screenPoint     forRowIndexes: (NSIndexSet *)rowIndexes; - (NSDragOperation)tableView: (NSTableView *)tableView                 validateDrop: (id <NSDraggingInfo>)draggingInfo                  proposedRow: (NSInteger)row        proposedDropOperation: (NSTableViewDropOperation)dropOperation; - (BOOL)tableView: (NSTableView *)tableView        acceptDrop: (id <NSDraggingInfo>)draggingInfo               row: (NSInteger)row     dropOperation: (NSTableViewDropOperation)dropOperation; - (void)tableView: (NSTableView *)tableView   draggingSession: (NSDraggingSession *)session      endedAtPoint: (NSPoint)screenPoint         operation: (NSDragOperation)operation; @end @interface MyDiffableDataSource : NSTableViewDiffableDataSource @property (weak, nonatomic, readwrite) id <MyDiffableDataSourceDelegate> delegate; @end In the MyDiffableDataSource.m file, it would do something like this: - (nullable id <NSPasteboardWriting>)tableView:(NSTableView *)tableView                         pasteboardWriterForRow:(NSInteger)row {     if ([self.delegate respondsToSelector: @selector(tableView:pasteboardWriterForRow:)]){         return [self.delegate tableView: tableView                  pasteboardWriterForRow: row];     }     return nil; } . . . etc I did not want to have drag and drop code in different classes, which I why I implemented step 2 and 3 using delegate messaging. Of course, I would need MyViewController to be set as the delegate of MyDiffableDataSource. Too bad there is no real documentation that easily goes over this. You have to guess it when reading that NSTableViewDIffableDataSource conforms to NSTableViewDataSource. EH
Topic: UI Frameworks SubTopic: AppKit Tags:
Replies
Boosts
Views
Activity
Jul ’21