OC直接打印数组,数组元素显示中文的问题 [复制链接]

网易iOS校招提前批笔试全攻略:从OC内存到编程题策略 在iOS开发校招准备中,理解底层原理比死记API更重要。Objective-C Runtime作为动态机制的核心,决定了方法查找、消息转发等关键行为,是面试官辨别候选人技术深度的分水岭。围绕Runtime,引用计数与weak指针的底层维护逻辑、Block对变量的捕获方式,共同构成了内存管理的必备认知。另一大高频考点是GCD多线程,串行/并发队列与同步/异步任务的组合、死锁产生条件,直接反映工程并发设计能力。这些概念的价值不仅在于应对笔试,更在于后续解决真实项目中的性能优化、崩溃防护等问题。在网易等大厂校招提 阅读详情

http://bbs.itheima.com/thread-148766-1-1.html

这里我们假设有一个OC数组,然后里面放了一个Person类对象p1,
然后我们希望通过直接打印数组,得到数组里元素的相关信息。

  1. Person *p1 = [[Person alloc init];
  2.         NSArray *array1 =@[p1];
  3.         for (id s in array1) {
  4.             NSLog(@"%@",s);
  5.         }
复制代码

如果直接像上面那样写的话,我们会得到类对象的内存地址
(打印一个对象:NSLog(@"%@", stu); 默认情况下打印的时对象的名字和内存地址)
  1. <Person: 0x100202ea0>
复制代码
[size=16.3636360168457px]显示这不是我们想要的结果,所以我们会重写Person的 description方法
  1. - (NSString *)description  {
  2.     return [NSString stringWithFormat:@"我是一个人"];
  3. }
复制代码
然后我们再次执行程序,你会发现程序一样没有得到我们想要的结果,出现乱码非中文了。
  1. "\U6211\U662f\U4e00\U4e2a\U4eba"
复制代码
上面的东西貌似是文字的unicode编码。
等,我们先再回顾一下思路,虽然这很简单。
打印数组,用NSLog%@",是不是也应该重写description方法?
我刚测试了,其实不用除非数组元素的description方法里含有中文。
但是,有时候又必须要有中文呢,那我们就重写description方法吧。
由于NSArray是一个系统的类,又没有在工程中有这个类的文件,所以我想到了用分类,好像也可以直接写在main函数中,那我们先写在分类里吧。
于是我尝试这样写
  1. - (NSString *)description {
  2.     id s;
  3.     for (s in self) {
  4.       [NSString stringWithFormat:@"%@", s];
  5.         NSLog(@"%@",s);
  6.     }
  7.    return s;
  8. }
复制代码
结果还是不行。
原来这种情况下我们要重写的是descriptionWithLocale:方法
  1. - (NSString *)descriptionWithLocale:(id)locale
  2. {
  3.     NSMutableString *strM = [NSMutableString string];
  4.     [strM appendString:@"(\n"];
  5.    
  6.     for (id obj in self) {
  7.         [strM appendFormat:@"\t%@,\n", obj];
  8.     }
  9.     [strM appendString:@")"];

  10.     return strM;
  11. }
复制代码

STM32F103R8T6中文实战指南:从寄存器配置到项目落地 STM32F103R8T6是嵌入式入门与工业控制的经典微控制器,其核心价值在于平衡的资源(72MHz主频、64KB Flash、20KB RAM)与成熟的中文生态。理解其时钟树配置、GPIO复用机制、中断优先级管理及DMA传输原理,是规避HardFault、串口卡死、PWM失准等高频问题的技术基础。结合Keil/VSCode开发环境、HAL/标准库差异、RTT调试与FatFs文件系统等工程实践,可支撑智能小车PID控制、LVGL图形界面、传感器数据融合等真实场景。本文聚焦中文资料缺失的关键环节——寄存器级配 阅读详情

相关推荐

JVM内存结构全解析:从堆栈到元空间,掌握OOM排查与调优

JVM内存结构是Java开发者必须掌握的基础知识,它描述了程序运行时数据在JVM中的分布方式。根据JVM规范,运行时数据区分为程序计数器、Java虚拟机栈、本地方法栈、Java堆、方法区等区域,其中堆和栈的职责差异、永久代到元空间的演变、直接内存的影响,直接关系到对象分配、GC回收和内存溢出(OOM)的排查。理清这些区域的生命周期与异常类型,是进行JVM调优和线上故障定位的前提。在实际工程中,诸如递归导致的StackOverflowError、缓存过多引起的Java heap space OOM,以及Gra

weixin_34406086的博客 315

oc- NSLog中文乱码如何解决?(已解决)

这里我们假设有一个OC数组,然后里面放了一个Person类对象p1, 然后我们希望通过直接打印数组,得到数组里元素的相关信息。 Person *p1 = [[Person alloc init];         NSArray *array1 =@[p1];         for (id s in array1) {             NSLog

Ios为我所用 5817

PMBus协议解析:基于I2C的电源管理实战与TMS320F28003x驱动开发

在嵌入式系统与服务器电源设计中,数字电源管理总线是实现高效、可靠电源监控与控制的关键技术。PMBus协议基于广泛应用的I2C总线物理层,通过定义标准化的命令集、数据格式与时序规范,为多路电源的电压电流监控、动态调整及故障处理提供了高效解决方案。其技术价值在于通过硬件自动处理协议解析、时钟拉伸与中断,显著降低软件复杂度,使开发者能聚焦于电源环路设计等核心逻辑。该协议广泛应用于服务器、通信基站及高性能计算板卡等场景,通过引入数据包错误检查、专用告警线等机制,确保了电源管理的可靠性。本文以TI TMS320F28

weixin_29189377的博客 374

编辑器出现乱码原因

乱码出现的原因很简单,无非就是因为使用的字符编码集不一致,而对于我们使用字符的时候有两个地方,一个是文本文件的编码方式,另外一个就是文本内容的编码格式。文件的编码与内容的编码保持一致,还有就是文本内容的前后修改使用同样的编码格式,这样才能保证在修改文件内容时不会出现中文乱码。   解决办法就是,在我们看到文本内容出现乱码的时候在修改内容之前进行编码修改,修改成为正确的编码后再进行修改,如果在修改

duguduchong的专栏 1万+

提供一个微信投票刷票的js代码

最近几天,有个朋友找我去写一个脚本帮他 在微信上刷票、微信投票刷票,我大概看了一下,本次微信投票刷票其实就是根据微信的openid来限制,每个openid只能投三次票的限制。上图可以看出,其实只要openid,和toopenid即可,openid是自己的微信id,toopenid是投票对象的微信id,那我们定时修改openid即可给某一个人刷投票。把这段代码复制到浏览器F12之后的console里,直接回车即可开始微信投票刷票(刷新或关闭浏览器即可停止刷票)//生成随机的ip地址。

qq_858865388专业提供快速微信投票教程攻略和方法的博客 2万+

AutoSAR RTE调度机制揭秘:从定时器事件到Runnable执行的完整流程

本文深入解析了AutoSAR RTE(运行时环境)的核心调度机制,详细阐述了从定时器事件触发到Runnable(可运行实体)执行的完整流程。通过剖析Rte_Start()函数、OS任务与警报的交互,以及事件驱动循环,揭示了RTE如何作为幕后指挥家,高效、可靠地协调软件组件间的周期性任务执行,是打通AutoSAR应用开发的关键。

weixin_29169899的博客 226

解决oc中中文乱码问题

//解决NSDitionary中文乱码问题//解决NSArray中文乱码问题 // //  NSDictionary+Unicode.h #import @interface NSDictionary (Unicode) @end ============================================ // //  NSDictionary+Un

bellazhouyi的专栏 3753

告别手动发日报!用n8n+钉钉打造智能报告机器人(含模板下载)

本文详细介绍了如何利用n8n开源工作流自动化平台与钉钉机器人搭建智能日报系统,实现数据自动采集、处理和发送。通过实战步骤和模板下载,帮助用户告别手动处理日报的繁琐,提升工作效率和数据准确性。

h3i4j的博客 856

OC 出现中文乱码

@interface NSArray (Log) @end #import "NSArray+Log.h" @implementation NSArray (Log) - (NSString *)descriptionWithLocale:(id)locale { NSMutableString *str = [NSMutableString strin...

weixin_30621919的博客 604

反序列化漏洞详解

目录 一、什么是序列化和反序列化 二、什么是反序列化漏洞 三、序列化函数(serialize) 四、反序列化(unserialize) ​五、什么是PHP魔术方法 六、一些常见的魔术方法 七、魔术方法的利用 八、反序列化漏洞的利用 1.__destruct()函数 2.__wakeup() 3.toString() ​九、反序列化漏洞的防御 一、什么是序列化和反序列化 序列化是将对象转换为字符串以便存储传输的一种方式。而反序列化恰好就是序列化的逆过程,反序列化会将字符串.

LJH1999ZN的博客 3万+

MATLAB 2022b 用户专属:保姆级IPOPT求解器安装配置全流程(含OPTI工具箱)

本文为MATLAB 2022b用户提供IPOPT求解器的详细安装与配置指南,涵盖OPTI工具箱的适配安装、环境变量设置及常见问题解决方案。通过实战案例演示非线性优化问题的求解过程,帮助用户高效部署这一强大的优化工具,提升工程计算效率。

weixin_29092031的博客 405

OC Extension UTF8(日志UTF8内容转换成中文)

** 一直觉得自己写的不是技术,而是情怀,一个个的教程是自己这一路走来的痕迹。靠专业技能的成功是最具可复制性的,希望我的这条路能让你们少走弯路,希望我能帮你们抹去知识的蒙尘,希望我能帮你们理清知识的脉络,希望未来技术之巅上有你们也有我。 ** 使用 NSArray *arr = @[@"0",@"1",@"2"]; NSLog(@"%@",arr[5]); 打印结果: 2019-06-20 08:41:36.923919+0800 OCDemol[32360:18546088] (null) .

weixin_38716347的博客 419

移动端 AI 部署:ONNX Runtime + Android 从模型到 App

移动端 ONNX 部署的流程是 PC 端导出 ONNX → 放到 Android 项目 assets → ONNX Runtime AAR 加载推理。核心是OrtSession,预处理在 Java 层用 Bitmap 操作完成。建议先在 PC 上用 onnxruntime Python 验证模型正确,再集成到 Android 端,可以减少定位问题的时间。ONNX Runtime 自动调用 NNAPI,在主流芯片上不需要额外适配。

know_F0727的博客 71

OC Extension SafeObject(防止数组字典取值越界)

** 一直觉得自己写的不是技术,而是情怀,一个个的教程是自己这一路走来的痕迹。靠专业技能的成功是最具可复制性的,希望我的这条路能让你们少走弯路,希望我能帮你们抹去知识的蒙尘,希望我能帮你们理清知识的脉络,希望未来技术之巅上有你们也有我。 ** 使用 NSArray *arr = @[@"0",@"1",@"2"]; NSLog(@"%@",arr[5]); 打印结果: 2019-06-20 08:41:36.923919+0800 OCDemol[32360:18546088] (null) .

weixin_38716347的博客 538

【零基础学习CAPL】——CAN报文的发送(CRC——ChecSum值)

本章主要介绍带有CRC值的报文发送一般报文可使用CANoe的IG模块直接发送,但带有CRC值的报文就只能编写脚本进行发送,以下详细讲解在配合Panel面板情况下,如何进行带有循环冗余码的报文进行报文的发送。

LOVE135149的博客 1911

IEM模型,地表粗糙度模拟

利用微波反演土壤水分时候,利用IEM模型可以实现对随机地表的模拟

关于OC对象拷贝的问题

先来打一下实例: 创建一个Person类: Person.h: #import <Foundation/Foundation.h> @interface Person : NSObject<NSCopying> @property(nonatomic,assign) int age; @property(nonatomic,...

weixin_34114823的博客 103

Camera2Demo

在Camera2 的基础上进行封装,使得Camera2一堆初始化逻辑与Activity分离,降低耦合度,完成预览拍照并保存的操作

OctoPrint 内置 Upload Manager 插件深度解析:打印文件的全方位管理

Upload Manager 是 OctoPrint 自 1.11.0 起内置的文件管理插件,取代了已停止维护的第三方 File Manager 插件,让用户可以在浏览器界面中直接对上传到 OctoPrint 的打印文件(GCode、模型文件与文件夹)进行搜索、多选、重命名、复制、移动、删除、切片、加载打印、下载与缩略图刷新等全流程管理。本文将基于该插件在仓库中的官方文档与源码实现(`src/oc

gitblog_01040的博客 979

efm32 入门.pdf

本PDF共计22页,介绍的是操作驱动API,下载与否自己斟酌。

复分析 阿尔福斯(Ahlfors) 第三版答案 英文

答案分为十章,有部分习题没有答案,全英文复分析阿尔福斯(Ahlfors) 第三版答案

[OC Runtime编程指南_翻译]八、声明属性

当编译器遇到属性声明(请参阅 _Objective-C _编程语言中 声明属性)时,它会生成与封闭类、类别或协议相关联的描述性元数据。您可以使用支持在类或协议上按名称查找属性、以**@encode**字符串形式获取属性类型以及以C字符串数组形式复制属性属性列表的函数来访问此元数据。声明的属性列表可用于每个类和协议。 属性类型和功能 Property结构定义属性描述符的不透明句柄。 typedef struct objc_property *Property; 可以使用函数class_copyPropert

lin1109221208的博客 360

系列:iOS开发-C语言基础

系列:iOS开发-C语言基础之前也说了iOS中的OC是扩充C的面向对象编程语言 那么无论是从什么角度来说都要首先回顾一下C的内容,虽然很多人在大学的时候都有学习过C语言,一提到谭浩强,我估计90%的人都熟悉,至于为什么,我也不知道... 首先科普一下C部分的介绍:C语言是一门通用计算机编程语言,应用广泛。C语言的设计目标是提供一种能以简易的方式编译、处理低级存储器、产生少量的机器码以及不需要任何运行

spicyShrimp的博客 1075

Objective-C与JavaScript双向通信实战:WKWebView混合开发指南

在移动与桌面应用开发中,混合开发模式结合了原生性能与Web技术灵活性,成为构建复杂应用的重要架构。其核心原理在于通过JavaScript引擎桥接原生代码与Web视图,实现跨语言调用与数据交换。这一技术价值在于能充分发挥原生系统能力与Web生态优势,提升开发效率与跨平台一致性。在macOS/iOS平台上,WKWebView与JavaScriptCore是实现Objective-C与JavaScript互调的关键框架,广泛应用于需要内嵌Web界面、调用原生硬件功能或集成脚本引擎的场景。本文聚焦于WKWebVie

weixin_30279671的博客 404

Mac外接显示器亮度音量用键盘就能调:MonitorControl 安装与配置

深夜办公,想把外接显示器调暗一点,F1、F2 却只作用于内置屏幕,最后只能趴到显示器背后去按物理按键。MonitorControl 是一款免费开源的 macOS 菜单栏应用,让你用键盘按键或菜单栏滑块控制外接显示器的亮度、音量与对比度,屏幕上弹出的是系统原生 macOS OSD,体验与 Apple 显示器一致。 ## 它到底解决什么问题 装之前:键盘亮度键和媒体键只对内置屏与本机扬声器生效,外

gitblog_00374的博客 688

Folly `rich_exception_ptr` 设计解析:64 位位打包联合体、RTTI-free 快速路径与取消传播

`folly::result` 是 Folly 中用于消除「灵活的异常」与「朴素的错误码」之间二选一困境的核心错误处理组件,而 `rich_exception_ptr` 正是支撑 `result` 的能力底座:它既要像 `std::exception_ptr` / `folly::exception_wrapper` 一样能承载任意动态异常,又要在常见 64 位 libcxx / libstdc+

gitblog_00930的博客 505

OpenClaw 2.6.6 Windows 安装与深度配置指南

OpenClaw 是一个面向开发者的本地智能体运行时环境,本质是将大语言模型能力封装为可编程 CLI 工具,实现如 `openclaw ask` 这类命令式调用。其核心原理依赖 Node.js 运行时、全局 npm/pnpm 包管理机制及本地网关服务(Gateway)的 HTTP 中转架构。技术价值在于打通模型、技能与工作流,支持本地 Llama、Claude 等多后端集成,并通过预置技能(如 web-scraper、pdf-extract)降低 AI 应用门槛。典型应用场景包括自动化周报总结、网页内容提取

weixin_33933118的博客 493

从Keil MDK到STM32Cube IDE:HAL库项目迁移全指南

嵌入式开发中,工具链的切换往往牵一发动全身。从编译器原理看,ARMCC与GCC在关键字、内联汇编和优化策略上存在本质差异,而工程结构、启动文件与链接脚本的差异更是迁移的关键。STM32CubeIDE凭借免费跨平台、图形化配置及HAL库自动生成能力,正成为越来越多团队的选择。理解这些底层概念,不仅能解释为什么“另存为”无法完成迁移,更能指导实际的项目改造。本文以HAL库为切入点,系统梳理外设API改写、头文件宏定义处理、GCC兼容性调整、编译链接报错排查及烧录调试等完整链路,适用于产品级老工程工具链升级、国产

weixin_34043301的博客 375
上一篇: [已解决]iOS thread exc bad access code = 1 address = 0x6
下一篇: Object c的字符串,数组和字典的笔记
千雅爸爸
博客等级 码龄18年 292粉丝 639原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值