继续创作,加速生长!这是我参加「日新计划 6 月更文应战」的第11天,点击查看活动概况

引言

  1. iOS无线真机调试的运用场景:忘掉带数据

假如有数据线,尽量运用数据线真机调试。运用数据线的传输速度肯定比无限快。

  1. 不晋级Xcode进行高版别体系真机调试的计划
  2. 处理问题:控制台呈现很多 CUICatalog: Invalid asset name supplied: ''

I 无线真机调试的设置过程

1.1 敞开Connect via network

  1. 衔接真机调试数据线,在Xcode工具栏,点击 Window -> Devices and Simulators 选中Connect via network,默许是不选中的,这时候会看到左侧的设备会呈现一个网络球的标志。

    iOS调试小技能:无线真机调试、忽略警告、去除冗余日志信息

  2. 拔掉数据线后,衔接成功后会在设备处显现一个网络球的标志,今后就能够直接无线调试

1.2 注意事项

真机和电脑需要在同一局域网才能够衔接,衔接成功后,今后会自动识别; 即便插上了数据线,也优先运用无线通道调试,因而记得及时关掉

  • Connect via network开关

II 不晋级Xcode进行高版别体系真机调试的计划

案例:Xcode7.2不晋级Xcode7.3,对iOS9.3设备进行真机调试

从网上下载Xcode7.3.dmg并将其间的9.3文件夹拷贝到Xcode7.2中的对应目录/Applications/Xcode.app/Contents/Developer/Platforms/iPhoneOS.platform/DeviceSupport中去,你可能需要管理员权限以完结拷贝.

iOS调试小技能:无线真机调试、忽略警告、去除冗余日志信息
同理:Xcode7 对应的目录放到Xcode8 对应的目录就能够真机调试8.0 以下的体系了
iOS调试小技能:无线真机调试、忽略警告、去除冗余日志信息
> 你也养成备份Xcode历史版别的真机调试文件的习惯 github.com/zhangkn/DKB…

III 日志相关

3.1 NSLog调试技巧

当前函数签名

    NSLog( @"calling: %s", __PRETTY_FUNCTION__ );

更多内容请看这篇:kunnan.blog.csdn.net/article/det…

3.2 忽略警告(屏蔽clang warning)

原理: 用#pragma声明来避免来自编译器或许静态分析器的警告

Xcode 调试技巧:忽略警告(屏蔽clang warning)

a、大局/局部屏蔽的办法 b、忽略 CocoaPods 第三方库警告 c、clang/Lexer/Parser 警告清单

———————————————— 版权声明:本文为CSDN博主「iOS逆向」的原创文章,遵从CC 4.0 BY-SA版权协议,转载>请附上原文出处链接及本声明。 原文链接:https://blog.csdn.net/z929118967/article/details/77678850

3.3 去除冗余日志信息

问题:控制台呈现很多 CUICatalog: Invalid asset name supplied: ''

原因:[UIImage imageNamed:]的 name为nil

+ (nullable UIImage *)imageNamed:(NSString *)name;      // load from main bundle

Returns:An object containing an unconfigured version of the image, or nil if the method could not find the specified image.

处理思路:假如图片称号为空串,不履行imageNamed:

处理办法:已然找不到图片是回来nil,那就使用办法交换,判断假如发现图片为空直接回来;假如找不到图片就打印图片称号,以便进行二次确认。

//  Created by mac on 2022/5/30.
//  Copyright  2022 CRM. All rights reserved.
//
#import <objc/runtime.h>
#import "UIImage+CRMInvalidAssetName.h"
@implementation UIImage (CRMInvalidAssetName)
+(void)load{
    Method imageNamed = class_getClassMethod(self,@selector(imageNamed:));
    Method kn_ImageNamed =class_getClassMethod(self,@selector(kn_none_imageNamed:));
    method_exchangeImplementations(imageNamed, kn_ImageNamed);
}
/**
 处理思路:假如图片称号为空串,不履行`imageNamed:`。
 */
+(instancetype)kn_none_imageNamed:(NSString*)name{
    NSLog( @"calling: %s", __PRETTY_FUNCTION__ );
    if ([NSStringTool isBlankString:name]) {
        NSLog(@"图片称号为空=============%@",name);
        return  nil;
    }
    UIImage *image = [self kn_none_imageNamed:name];
    if (image == nil) {
        NSLog(@"找不到图片=============%@",name);
        return  nil;
    }
    return image;
}
@end

判断空字符串

+(BOOL)isBlankString:(NSString*   ) string{
    if (string == nil || string == NULL) {
        return YES;
    }
    if ([string isKindOfClass:[NSNull class]]) {
        return YES;
    }
    if ([string isKindOfClass:[NSString class]] ) {
        if(string.length <1){
            return YES;
        }
    }
    string = [NSString stringWithFormat:@"%@",string];
    if ([[string stringByTrimmingCharactersInSet:[NSCharacterSet whitespaceCharacterSet]] length]==0) {
        return YES;
    }
    return NO;
}

see also

iOS真机调试的其他注意事项

1、如何成为开发者

2、装备真机调试证书的过程

3、敞开僵尸对象(Zombie Objects)来定位内存问题 blog.csdn.net/z929118967/…