持续创作,加速成长!这是我参与「掘金日新计划 · 6 月更文挑战」的第11天,点击查看活动详情
引言
- iOS无线真机调试的使用场景:忘记带数据
如果有数据线,尽量使用数据线真机调试。使用数据线的传输速度肯定比无限快。
- 不升级Xcode进行高版本系统真机调试的方案
- 解决问题:控制台出现大量
CUICatalog: Invalid asset name supplied: ''
I 无线真机调试的设置步骤
1.1 开启Connect via network
- 连接真机调试数据线,在Xcode工具栏,点击 Window -> Devices and Simulators
选中Connect via network,默认是不选中的,这时候会看到左侧的设备会出现一个网络球的标志。
- 拔掉数据线后,连接成功后会在设备处显示一个网络球的标志,以后就可以直接无线调试
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中去,你可能需要管理员权限以完成拷贝.
同理:Xcode7 对应的目录放到Xcode8 对应的目录就可以真机调试8.0 以下的系统了
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/…