XZ_iOS 之UIAlertController 修改title、message和action颜色、大小

博客介绍了UIAlertController修改样式的方法,无需获取Ivar属性判断,可直接修改title和message的颜色或大小。还将此方法封装在分类中,调用十分方便。

效果图如下:

之前看了很多的博客,都是先获取 Ivar属性,然后判断是title还是message再进行修改,其实不用,可以直接拿到title和message进行修改,代码如下:

/**
 简单的文字弹窗,带’确定‘文字

 @param title 题目
 @param message 内容
 @param target 目标控制器
 */
+ (void)showAlertWithTitle:(NSString *)title message:(NSString *)message target:(nullable id)target {
    
    UIAlertController *alertController = [UIAlertController alertControllerWithTitle: title message: message preferredStyle: UIAlertControllerStyleAlert];
    
    // title 颜色
    NSMutableAttributedString *attr = [[NSMutableAttributedString alloc] initWithString: title attributes: @{NSForegroundColorAttributeName: [UIColor greenColor]}];
    [alertController setValue: attr forKey: @"attributedTitle"];
    // message颜色
    NSMutableAttributedString *attrMessage = [[NSMutableAttributedString alloc]initWithString: message attributes: @{NSForegroundColorAttributeName: [UIColor redColor], NSFontAttributeName:[UIFont boldSystemFontOfSize: 12.0]}];
    [alertController setValue: attrMessage forKey: @"attributedMessage"];
    // UIAlertAction颜色
    UIAlertAction *sure = [UIAlertAction actionWithTitle: @"确定" style: UIAlertActionStyleDefault handler:^(UIAlertAction * _Nonnull action) {
    }];
    [alertController addAction: sure];
    [sure setValue: [UIColor darkGrayColor] forKey: @"titleTextColor"];
    
    [target presentViewController: alertController animated: YES completion:nil];
}

我把上面的方法封装在了的分类中,调用十分的方便,如下:

[UIAlertController showAlertWithTitle: @"标题" message: @"\n内容\n" target: self];

 

<think>我们正在讨论Bitbake编译过程中的线程限制问题。用户询问了关于XZ_THREADS参数的作用以及是否需要修改它来限制线程个数。根据引用[2]的内容,xz工具在旧版本中不支持多线程压缩,而新版本(如5.2.4)支持通过-T参数指定线程数。在Bitbake构建过程中,xz通常用于压缩任务(如压缩包镜像文件)。因此,XZ_THREADS环境变量构建参数可能用于控制xz压缩时的线程数。在Bitbake环境中,XZ_THREADS通常不是Bitbake的核心配置变量,而是传递给xz工具的选项。在构建过程中,xz可能被多个任务调用,例如压缩根文件系统打包镜像。如果用户希望限制xz压缩步骤的线程数,可以设置XZ_THREADS环境变量。然而,在Bitbake中更常见的做法是通过全局变量(如PARALLEL_MAKE)任务级别的参数来控制并行度。具体到xz压缩,用户可以通过以下方式设置:1.**在local.conf中设置环境变量**:在`conf/local.conf`文件中添加:```exportXZ_THREADS="4"```这样,在Bitbake执行过程中,所有调用xz的任务都会使用这个环境变量。2.**在任务中直接传递参数**:如果某个特定的recipe需要控制xz线程数,可以在该recipe的do_installdo_package等任务中添加:```do_install(){XZ_THREADS=4xz-dsomefile}```3.**通过Bitbake的全局配置影响xz**:Bitbake的BB_NUMBER_THREADS控制的是Bitbake任务级别的并行度(即同时运行的任务数),而PARALLEL_MAKE控制的是make命令的并行度(即每个任务内部的编译线程数)。它们并不直接影响xz工具。因此,如果需要限制xz的线程数,单独设置XZ_THREADS是必要的。**是否需要修改XZ_THREADS?**-如果构建过程中出现资源紧张(如内存不足)导致xz压缩失败,者用户希望减少压缩步骤对系统的影响,那么限制XZ_THREADS是有益的。-在资源受限的系统(如嵌入式开发机)上,建议将XZ_THREADS设置为一个较小的值(如24)。-在默认情况下,xz可能会尝试使用所有可用的CPU核心,这可能导致系统负载过高。因此,用户可以根据实际情况决定是否设置XZ_THREADS。如果构建过程中压缩步骤为瓶颈导致系统不稳定,则应该设置。**总结**:-XZ_THREADS用于控制xz压缩工具的线程数。-在Bitbake中,可以通过设置环境变量(如exportXZ_THREADS)来限制xz的线程数。-修改XZ_THREADS不是必须的,但在资源受限的环境中推荐设置。§§相关问题§§1.如何监控Bitbake构建过程中各任务(包括压缩任务)的资源占用情况?2.除了xz,Bitbake构建过程中还有哪些工具可能需要单独设置线程数?3.在Bitbake中如何为特定任务设置环境变量?</think>### Bitbake编译中`XZ_THREADS`参数的作用及修改建议 #### 1. **XZ_THREADS参数的作用** `XZ_THREADS`是控制**xz压缩工具线程数**的专用参数(非Bitbake核心变量): - **功能**:限制xz在多线程压缩时的并行度(引用[2]) - **与Bitbake的关系**: - xz常用于压缩Bitbake生的镜像/包文件(如rootfs.tar.xz) - 默认行为:xz会尝试使用所有可用CPU核心(引用[2]示例中12线程机器占用率600%) - 独立于Bitbake的`BB_NUMBER_THREADS`(后者控制任务级并行度) #### 2. **是否需要修改以限制线程数?** **需要修改的场景**: - **资源受限系统**:嵌入式设备内存不足时,xz多线程压缩易引发OOM(引用[2]提到高压缩率时CPU占用异常) - **混合编译环境**:当同时运行Bitbake多任务xz压缩时,需避免资源争用 - **特定性能需求**:如降低压缩优先级(`-6`比`-9`更易利用多核,引用[2]) **无需修改的场景**: - 系统资源充足(如服务器构建) - 压缩非瓶颈步骤(小文件压缩耗时可忽略) #### 3. **修改方法** 在Bitbake环境中通过两种方式控制: ```bash # 方法1:在conf/local.conf中全局设置 XZ_THREADS = "4" # 限制xz最多使用4线程[^2] # 方法2:在特定recipe中覆盖 do_compress() { XZ_THREADS=4 xz -k -z ${FILE} } ``` #### 4. **最佳实践** - **线程数建议**: - 安全值:`min(物理核心数, 4)`(尤其内存<16GB时) - 验证命令:`xz -T $N -k testfile`(观察`top`中的CPU%) - **关联优化**: ```bash # 与Bitbake主线程设置协同(引用[1]) BB_NUMBER_THREADS = "8" # 任务级并行度 PARALLEL_MAKE = "-j 6" # make编译线程 XZ_THREADS = "2" # 压缩专用线程 ``` > **关键结论**:在资源受限环境中**必须修改`XZ_THREADS`**,否则xz可能耗尽内存(引用[2]示例)。典型场景设置为物理核心数的1/3。
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值