首页
学习
活动
专区
圈层
工具
发布

什么是__NSArrayI和__NSArrayM?如何转换为NSArray?

什么是NSArrayI和NSArrayM?

NSArrayI和NSArrayM是Objective-C中的两种不同类型的数组。

__NSArrayI:这是一个不可变的数组,表示在创建后,数组的内容不能被修改。这种类型的数组在内存中的表现形式是一个元素的指针列表,因此它的性能更好。

__NSArrayM:这是一个可变的数组,表示在创建后,数组的内容可以被修改。这种类型的数组在内存中的表现形式是一个元素的指针列表,因此它的性能也很好。

如何转换为NSArray?

如果你想将NSArrayI或NSArrayM转换为NSArray,可以使用以下方法:

代码语言:objective-c
复制
NSArray *convertedArray = [originalArray copy];

这将创建一个新的NSArray,其中包含原始数组的所有元素。这个新的NSArray将是可变的,即使原始数组是不可变的。

相关搜索:如何将react js array []转换为iOS中的NSArray和Android中的string[]?如何在db2和SQL中将1.3333333转换为1.34?如何将'iso Archive‘转换为'iso'?什么是iso Archive?什么是聚合和POD以及它们如何/为何特殊?Pandas:什么是dtype = <U64,如何将其转换为String?Laravel查询:如何将布尔值1和0转换为“通过”或“失败”如何将具有EntityState和值的查询从Entity Framework5转换为6?为什么Tensorflow会将int32/int32转换为float64,以及如何阻止它?为什么将A<B>转换为A<C>有时会成功,即使B和C是不相关的?为什么这个程序打印"Hello"?(在Java中,函数指针是如何转换为Runnable.run()的)什么是自动加载; 你如何使用spl_autoload,__ autoload和spl_autoload_register?如何在C中使用nanosleep()?什么是`tim.tv_sec`和`tim.tv_nsec`?为什么CameraX预览在真实设备上是模糊和模糊的,以及如何对焦?为什么我的Rcmdr语言是西班牙语,而我的R(和windows)是葡萄牙语?如何解决?如何从转换为数组类型的字符串中提取特定范围的字符--什么是不能做的?如何在新的DataFrame列中将MMSS和百分之一秒转换为秒什么是抽象类型和复合类型,以及如何有效地使用它们?(Julia语言)SQL Server 2019中的“Data”和“value”关键字是什么,它们是如何工作的?如何将传入的JSON数据转换为具有行和列的表格式,其中数据是动态的?什么是jquery中的.kendobutton()方法,以及如何解除绑定和绑定该按钮的'click‘事件?
相关搜索:
页面内容是否对你有帮助?
有帮助
没帮助

相关·内容

  • iOS开发·runtime原理与实践: 方法交换篇(Method Swizzling)(iOS“黑魔法”,埋点统计,禁止UI控件连续点击,防奔溃处理)

    其实点击事件在runtime里面是发送消息,我们可以把要发送的消息的SEL 和自己写的SEL交换一下,然后在自己写的SEL里面判断是否执行点击事件。...所以如果想对NSArray进行Swizzling,必须获取到其“真身”进行Swizzling,直接对NSArray进行操作是无效的。...这是因为Method Swizzling对NSArray这些的类簇是不起作用的。 因为这些类簇类,其实是一种抽象工厂的设计模式。...下面列举了NSArray和NSDictionary本类的类名,可以通过Runtime函数取出本类: 类名 真身 NSArray __NSArrayI NSMutableArray __NSArrayM...+CrashHandle.m @implementation NSArray (CrashHandle) // Swizzling核心代码 // 需要注意的是,好多同学反馈下面代码不起作用,造成这个问题的原因大多都是其调用了

    2.9K60

    什么是IoC和DI?DI是如何实现的?

    IoC叫控制反转,是Inversion of Control的缩写,DI(Dependency Injection)叫依赖注入,是对IoC更简单的诠释。...控制反转是把传统上由程序代码直接操控的对象的调用权交给容器,通过容器来实现对象组件的装配和管理。...举个例子:一个类A需要用到接口B中的方法,那么就需要为类A和接口B建立关联或依赖关系,最原始的方法是在类A中创建一个接口B的实现类C的实例,但这种方法需要开发人员自行维护二者的依赖关系,也就是说当依赖关系发生变动的时候需要修改代码并重新构建整个系统...依赖注入可以通过setter方法注入(设值注入)、构造器注入和接口注入三种方式来实现,Spring支持setter注入和构造器注入,通常使用构造器注入来注入必须的依赖关系,对于可选的依赖关系,则setter...注入是更好的选择,setter注入需要类提供无参构造器或者无参的静态工厂方法来创建对象。

    82230

    什么是cuDNN?如何安装CUDA和cuDNN

    文章原文指路:https://juejin.cn/post/7479993915041660968正文如下:cuDNN是什么?为什么要安装cuDNN?...本文将介绍nvidia硬件和驱动(包含nvidia driver),cuda工具包(cuda toolkit),cuDNN系列库和TensorRT,讲解不同层次硬件和驱动以及软件的关系和作用.并使用腾讯...cloud stuio做示例,并安装和配置pytorch的GPU加速.cloud studio介绍Cloud Studio(云端 IDE)是基于浏览器的集成式开发环境,为开发者提供了一个稳定的云端工作站...由于Cloud Studio基于容器技术,已经在宿主机和GPU工作空间(本质是容器)安装了同一版本的Nvidia Driver.我们可以使用nvidia-smi查看 打开终端,输入nvidia-smi....version8是旧版本(但version8主流);实测Cloud Studio安装version8和10都可以.详情可见下面的log.此时pip install tensorrt-cu11命令默认安装

    1K10

    什么是cuDNN?如何安装CUDA和cuDNN

    cuDNN 是什么?为什么要安装 cuDNN ?...本文将介绍nvidia硬件和驱动(包含 nvidia driver ), cuda 工具包( cuda toolkit ), cuDNN 系列库和 TensorRT ,讲解不同层次硬件和驱动以及软件的关系和作用...由于 Cloud Studio 基于容器技术,已经在宿主机和 GPU 工作空间(本质是容器)安装了同一版本的 Nvidia Driver .我们可以使用 nvidia-smi 查看 打开终端,输入 nvidia-smi...CUDA toolkit CUDA Toolkit 是 NVIDIA 提供的一套完整的开发工具集,用于开发和优化 CUDA 程序.它包括编译器(如 nvcc)、调试器、运行时库(cudart)、性能分析工具以及各种数学和计算库....version8是旧版本(但version8主流);实测Cloud Studio安装version8和10都可以.详情可见下面的log. - 此时pip install tensorrt-cu11命令默认安装

    1.9K00

    什么是cryptojacking?如何防止,检测和从中恢复

    为什么cryptojacking正在上升 没有人确切知道加密货币是通过密码劫持开采的,但毫无疑问这种做法是猖獗的。基于浏览器的密码劫持正在快速增长。...被勒索和识别的风险也远低于勒索软件。密码代码秘密运行,可以长时间不被发现。一旦发现,很难追溯到源头,受害者没有什么动机去做,因为没有任何东西被盗或加密。...黑客倾向于选择像Monero和Zcash这样的匿名加密货币来比较流行的比特币,因为更难追踪非法活动。 cryptojacking如何工作 黑客有两种主要方式让受害者的计算机秘密窃取加密货币。...如何检测cryptojacking 就像勒索软件一样,尽管你尽最大的努力来阻止密码攻击,但它仍然会影响你的组织。检测它可能是困难的,特别是如果只有少数系统受到损害。...学习和适应。借助这些经验更好地了解攻击者是如何危害系统的。更新您的用户,帮助台和IT培训,以便他们能够更好地识别加密尝试并作出相应的响应。

    1.6K50

    XCode调试器LLDB

    程序会在这一行停止运行,并且控制台会被打开,允许我们和调试器交互。那我们应该打些什么呢? help 最简单命令是 help,它会列举出所有的命令。...如果你忘记了一个命令是做什么的,或者想知道更多的话,你可以通过 help command 来了解更多细节,例如 help print 或者 help thread。...注意,从现在开始,我们将会偷懒分别以 p 和 e 来代替 print 和 expression。 什么是 print 命令 考虑一个有意思的表达式:p count = 18。...(lldb) e -O -- $8 NSArrayI 0x7fdb9b71b3e0>( foo, bar ) 幸运的是,e -o -- 有也有个别名,那就是 po (print object...(lldb) p @"lunar" (NSString *) $13 = 0x00007fdb9d0003b0 @"lunar" 变量 现在你已经可以打印对象和简单类型,并且知道如何使用 expression

    1.4K60

    XCode调试器LLDB

    程序会在这一行停止运行,并且控制台会被打开,允许我们和调试器交互。那我们应该打些什么呢? help 最简单命令是 help,它会列举出所有的命令。...如果你忘记了一个命令是做什么的,或者想知道更多的话,你可以通过 help command 来了解更多细节,例如 help print 或者 help thread。...注意,从现在开始,我们将会偷懒分别以 p 和 e 来代替 print 和 expression。 什么是 print 命令 考虑一个有意思的表达式:p count = 18。...(lldb) e -O -- $8 NSArrayI 0x7fdb9b71b3e0>( foo, bar ) 幸运的是,e -o -- 有也有个别名,那就是 po (print object...(lldb) p @"lunar" (NSString *) $13 = 0x00007fdb9d0003b0 @"lunar" 变量 现在你已经可以打印对象和简单类型,并且知道如何使用 expression

    1.5K30

    什么是线程和进程?是如何创建、同步、通信、销毁的?

    计算机系统中,线程和进程是两个基本的概念。多线程编程已经成为现代编程中比较常见的技术,因此对于线程和进程的深刻理解变得尤为重要。...在 Java 中,线程是虚拟机中的一种轻量级对象,每个线程拥有自己的执行堆栈和程序计数器(Program Counter,PC),可以独立执行任务。...消息传递消息传递是一种线程通信的方式,可以让多个线程之间通过消息来进行通信。消息传递有两种方式:共享队列和直接通信。...共享队列共享队列是一种消息传递的方式,多个线程可以通过一个公共的队列来发送和接收消息。在使用共享队列时,需要使用互斥锁和条件变量来保证数据的一致性。...直接通信直接通信是一种消息传递的方式,多个线程之间通过直接发送消息来进行通信。在使用直接通信时,常用的方式有管道、套接字和消息队列等。

    57900

    什么是防抖和节流?有什么区别?如何实现?

    什么是防抖 防抖策略(debounce)是当事件被触发后,延迟 n 秒后再执行回调,如果在这 n 秒内事件又被触发,则重新计时 代码示例 let timer = null // 创建一个标记用来存放定时器的返回值...间隔内如果时间持续触发,就不会执行 fn 函数 timer = setTimeout(() => { fn.apply(this, arguments) }, 500) } 什么是节流...setTimeout(() => { // 最后在 setTimeout 执行完毕后再把标记设置为 true (关键)表示可以执行下一次循环了 // 当定时器没有执行的时候标记永远是...false,在开头被 return 掉 fn.apply(this, arguments) canRun = true }, 500) } 总结和区别 防抖:如果事件被频繁触发...节流:如果事件被频繁触发,节流能够减少事件触发的频率,因此,节流是有选择性地执行一部分事件!

    38520

    如何给女朋友解释什么是Git和GitHub?

    版本控制 想要介绍什么是GitHub,就要介绍下什么是Git,想要介绍什么是Git,那就不得不提版本控制。 我们知道,如果多台计算机在同一个局域网中,是可以进行局域网文件共享的。...共享者可以通过设置把自己文件共享给他人进行阅读和修改。 ? 对于同一份共享文件,如果又多个人需要修改的话会发生什么事情呢?... 集中化的版本控制系统 接下来人们又遇到一个问题,如何让在不同系统上的开发者协同工作?于是,集中化的版本控制系统应运而生。...现在,每个人都可以在一定程度上看到项目中的其他人正在做些什么。而管理员也可以轻松掌控每个开发者的权限,并且管理起来也轻松容易的多。 分布式版本控制系统 集中化最显而易见的缺点是中央服务器的单点问题。...book/zh/v1/ https://www.jianshu.com/p/b2ad5d9daa23 https://www.zhihu.com/question/23498424 往期文章一览 1、什么是

    51330
    领券