iOS 17 and Xcode 15.0 Beta7 issue records

1. iOS 17 real device debugging issues

After iOS 17, the Beta version must be debugged using the Beta version of Xcode on a real device. The previous method of copying DeviceSupport cannot be used to debug. The new Beta version of Xcode no longer contains the iOS 17 directory. As shown below:
Insert image description here
Solution:
Insert image description here

1) Download the latest Beta version Xcode 15
2) Run the command. defaults write com.apple.dt.Xcode DVTEnableCoreDevice enabled
At this time, a CoreDevice will appear in the old version of Xcode. At this time, you can continue debugging.

Insert image description here

2. An error occurs when running the project in Xcode 15 Beta version

When running the old version of the project, the following error is reported when compiling
Showing All Messages Assertion failed: (aliasSectionNum == sectionNum && "alias and its target must be located in the same section"), function assignAliasAtomOffsetInSection, file Layout.cpp, line 3248.
Insert image description here

Solution: Build Settings -> Other Linker Flags Add in -ld64

Insert image description here

3. UIGraphicsBeginImageContextWithOptions method crashes (Crash)

*** Assertion failure in void _UIGraphicsBeginImageContextWithOptions(CGSize, BOOL, CGFloat, BOOL)(), UIGraphics.m:410
Insert image description here
Solution: Replace the following code

UIGraphicsBeginImageContextWithOptions(self.bounds.size, self.opaque, self.contentsScale);
        CGContextRef context = UIGraphicsGetCurrentContext();
        if (self.opaque) {
    
    
            CGSize size = self.bounds.size;
            size.width *= self.contentsScale;
            size.height *= self.contentsScale;
            CGContextSaveGState(context); {
    
    
                if (!self.backgroundColor || CGColorGetAlpha(self.backgroundColor) < 1) {
    
    
                    CGContextSetFillColorWithColor(context, [UIColor whiteColor].CGColor);
                    CGContextAddRect(context, CGRectMake(0, 0, size.width, size.height));
                    CGContextFillPath(context);
                }
                if (self.backgroundColor) {
    
    
                    CGContextSetFillColorWithColor(context, self.backgroundColor);
                    CGContextAddRect(context, CGRectMake(0, 0, size.width, size.height));
                    CGContextFillPath(context);
                }
            } CGContextRestoreGState(context);
        }
        task.display(context, self.bounds.size, ^{
    
    return NO;});
        UIImage *image = UIGraphicsGetImageFromCurrentImageContext();
        UIGraphicsEndImageContext();
        self.contents = (__bridge id)(image.CGImage);

Replace with:

UIGraphicsImageRendererFormat *format = [[UIGraphicsImageRendererFormat alloc] init];
        format.opaque = self.opaque;
        format.scale = self.contentsScale;
        UIGraphicsImageRenderer *renderer = [[UIGraphicsImageRenderer alloc] initWithSize:self.bounds.size format:format];
        UIImage *image = [renderer imageWithActions:^(UIGraphicsImageRendererContext * _Nonnull rendererContext) {
    
    
            CGContextRef context = rendererContext.CGContext;
            if (self.opaque) {
    
    
                CGSize size = self.bounds.size;
                size.width *= self.contentsScale;
                size.height *= self.contentsScale;
                CGContextSaveGState(context); {
    
    
                    if (!self.backgroundColor || CGColorGetAlpha(self.backgroundColor) < 1) {
    
    
                        CGContextSetFillColorWithColor(context, [UIColor whiteColor].CGColor);
                        CGContextAddRect(context, CGRectMake(0, 0, size.width, size.height));
                        CGContextFillPath(context);
                    }
                    if (self.backgroundColor) {
    
    
                        CGContextSetFillColorWithColor(context, self.backgroundColor);
                        CGContextAddRect(context, CGRectMake(0, 0, size.width, size.height));
                        CGContextFillPath(context);
                    }
                } CGContextRestoreGState(context);
            }
            task.display(context, self.bounds.size, ^{
    
    return NO;});
        }];
        self.contents = (__bridge id)(image.CGImage);

Guess you like

Origin blog.csdn.net/weixin_36162680/article/details/132458651