最近了解了 NSMutableArray原理,通过这篇文章了解到了其原理,这次我就将原文的 ARM64 讨论部分省略,对 NSMutableArray原理进行自己的总结描述。 ##C语言中的数组 也是我们常说的,当数组需要插入时,都需要对插入的下标后的数组的元素进行移动。同时删除元素也是如此 这种情况下,如果数组中的元素特别多,就会非常的耗时,那么我们使用 OC 中的 NSMutableA
转载 2023-08-18 15:42:42
95阅读
一、简单介绍其实NSMutableArray的扩容的话应该就是在于如果其容量不够了,就会去重新malloc一块新的区域,然后会复制旧的数据到新的区域,之后把旧的空间给free掉。下面我们就先去查看下NSMutableArray的对象的内存信息以及下面的那个就是指向第一个数据的指针的地址信息,所以下面我们再去读取从它开始的100个字节的内存信息上面的0x01000020b0其实就是Milk字符串的地
转载 2023-09-23 20:28:29
119阅读
我总好奇 NSMutableArray 内部是如何工作的。别误会,不可变数组确实提供了极大的便利。它们不仅线程安全,在对它们进行拷贝时也是完全自由的。但这些改变不了它们死板的事实——它们的内容不可被修改。我发现实际内存操作的细节很迷人,这也是我这篇文章聚焦于可变数组的原因。当我在说明我是如何研究 NSMutableArray 的整个过程时,这篇文章会得相当具
转载 3月前
415阅读
copy和mutableCopy在实际开发中常用到,同时,copy属性修饰符也是我们在定义NSString、NSArray和block等需要用到的,要较好地掌握它们,需要从原理上去分析于理解,本文侧重于分析copy和mutableCopy是如何实现的,进一步讲解使用copy和mutableCopy时应该注意的细节问题 本文分成两个部分来讲解说明,第一个是copy和mutableCopy方法的使用,
一、普通C语言的数组实现:是开辟一段连续的内存空间,缺点:在插入下标为0的元素,会移动其他所有元素。添加,插入,删除同理。      当数组非常大时,这样很快会成为问题。  二、OC的NSMutableArray实现原理: 1、NSMutableArray 是一个类族,【【NSMutableArray new
转载 2023-07-31 23:01:38
351阅读
  1 NSMutableArray *array = [NSMutableArray arrayWithObjects:@"111",@"222",@"333",nil]; 2 NSMutableArray *array1 = [array copy]; 3 NSMutableArray *array2 = array1; 4 NSLog(@"aray:%@,ar
Student.h: #import <Foundation/Foundation.h> @interface Student : NSObject @property(nonatomic,assign) int age; +(id)studentWithAge:(int)age; @end Student.m: #import "Student.h" @
原创 2013-08-02 15:33:00
179阅读
Student.h:#import @interface Student : NSObject@property(nonatomic,assign) int age;+(id)studentWithAge:(int)age;@endStudent.m:#import "tudent+(id)studentWithAg
原创 2023-04-27 11:45:04
82阅读
在iOS开发中,我们在非常非常多的地方用到了数组。而关于数组,有很多需要注意和优化的细节,需要我们潜入到下面,去了解。阅读《Effective Objective-C 2.0》的原版的时候,我发现了之前没怎么注意到的一段话:In the case of NSArray, when an instance is allocated, it’s an instance of another class
转载 2023-09-13 20:58:22
164阅读
1、数组没有进行alloc之前,内存地址是0,即还没有分配内存。此时在系统中的状态是nil(即不存在)。一旦alloc之后,系统就会为数组对象分配内存,状态就不再是nil。而是有具体的内存地址。注意:nil是指在内存中没有分配响应的地址,即内存中压根没有它的位置。如果一旦alloc,那么这个对象的状态就不会是 nil 了。(1)未alloc前(2)alloc后 /*--------------在数
转载 2013-01-19 13:47:00
46阅读
2评论
 Cocoa的NSArray是基于C底层CFArray/CFArrayRef实现的,NSArray可以看做是一个CFArrayRef的Wrapper类。__NSArrayI(Immutable)是NSArray的真正类型,__NSArrayM(Mutable)是NSMutableArray的真正类型。NSArray保存的对象可以是不同类型的对象,但只能保存OC对象(继承自NSObject
转载 2023-08-26 22:22:24
136阅读
Objective - C 中有很多在日常项目中经常用到的常用代码,在这里着重的讲一下关于copy 和 mutableCopy 的区别以及相关用法。Objective - C 中可变对象和不可对象经常用的如下:NSString、 NSMutableString | NSArray、NSMutableArray,分开说:A:NSString、 NSMutableString二者的copy方
转载 2023-09-24 00:14:14
182阅读
 copy与mutableCopy都是深拷贝,区别是mutableCopy拷贝出的对象是可变的。 OC对象基本都是通过指针访问,所以一般情况下,通过对指针的赋值都是浅拷贝,即只是拷贝了一份对象的指针,对象还是只有一个。例: NSMutableString *str = [NSMutableString stringWithString:@"abc"]; NSString *st
转载 2024-01-21 06:55:40
75阅读
直接上代码:NSString* str0 = @"1
原创 2021-12-16 17:19:36
60阅读
# 实现NSMutableArray的步骤和代码解析 ## 概述 在iOS开发中,NSMutableArray是一种可变的数组,它允许我们随时添加、删除和修改其中的元素。本文将向刚入行的开发者介绍如何实现NSMutableArray。 ## 步骤概览 下面是实现NSMutableArray的步骤概览,我们将在接下来的内容中详细解释每一步的具体操作。 | 步骤 | 操作 | |----|---
原创 2024-02-02 08:24:28
50阅读
翻转一个数组非常简单:array.reverseObjectEnumerator.allObjects。我们使用系统提供的reverseObjectEnumerator,每一个NSEnumerator都实现了allObjects,该方法返回一个新数组。虽然没有原生的randomObjectEnumerator方法,你可以写一个自定义的打乱数组顺序的枚举器或者使用一些出色的开源代码。
IOS
原创 2014-03-20 12:12:28
2962阅读
一、NSMutableArray底层原理普通c数组,就是一段能被方便读写的连续内存控件。 使用一段线性内存空间的一个最明显的缺点是,在下标 0 处插入一个元素时,需要移动其它所有的元素,同样地,假如想要保持相同的内存指针作为首个元素的地址,移除第一个元素需要进行相同的动作NSMutableArray本质是一个对象。它采用了环形缓冲区的结构。在两端插入和删除非常的快。插入头尾只是修改offset指针
转载 2023-06-02 22:55:20
415阅读
/****************************************************************************** NSArray*******************************************************************************/    /*-----------------
原创 2013-06-30 18:33:08
782阅读
1代码//// main.swift// NSArrayDemo//// Created by 赵超 on 14-6-22.// Copyright (c) 2014年 赵超. All rights reserved.//import Foun
原创 2024-07-26 10:57:29
29阅读
Objective-C学习篇07—NSArray与NSMutableArray 大纲NSArrayNSMutableArray快速枚举  NSArray  NSArray是一个静态数组,也就是一个不可变数组,一旦创建以后,就不能进行添加,删除或者修改其中的元素.NSArray继承自NSObject,用于管理一系列有序对象的集合,可以通过对象在数组中的位置(索引)来访问对象.
转载 2023-12-22 21:51:26
39阅读
  • 1
  • 2
  • 3
  • 4
  • 5