nsmutablearray

NSMutableArray containsObject returns true, but it shouldnt

穿精又带淫゛_ 提交于 2021-02-19 01:39:08
问题 I found similar questions, but -containsObject is not working like I expect. My problem is the NSMutableArray -containsObject method returns true when it shouldn't, when trying to generate random UNIQUE colors and add to an array. What is the best way to check if NSMutableArray contains an object with same values. NSMutableArray *color_arr=[NSMutableArray array]; UIColor *t; for(int i=0; i<100; i+=1) { int r = arc4random()%256; int g = arc4random()%256; int b = arc4random()%256; t=[UIColor

How do I remove all objects from an NSMutableArray?

喜欢而已 提交于 2021-02-16 04:28:22
问题 I need to remove all objects from an NSMutableArray . I can't seem to do this by enumerating as the code crashes. Can anyone tell me the best way to do this with a code example if possible? 回答1: This should do the trick: [myArray removeAllObjects]; 回答2: In Swift 3: yourArry.removeAllObjects() 回答3: // In Swift arrayName.removeAllObjects() 回答4: in case [YourArray removeAllObjects]; doesn't work. Then do it manually as below: int c = (int)[YourArray count]-1; for (int l = 0; l <= c; l++) {

iOS 懒加载

寵の児 提交于 2020-04-07 13:16:08
1.懒加载基本 懒加载——也称为延迟加载,即在需要的时候才加载(效率低,占用内存小)。所谓懒加载,写的是其get方法. 注意:如果是懒加载的话则一定要注意先判断是否已经有了,如果没有那么再去进行实例化 2.使用懒加载的好处: (1)不必将创建对象的代码全部写在viewDidLoad方法中,代码的可读性更强 (2)每个控件的getter方法中分别负责各自的实例化处理,代码彼此之间的独立性强,松耦合 (3)只有当真正需要资源时,再去加载,节省了内存资源。 3.用法 声明一个属性 @property (nonatomic, retain) NSMutableArray *array; 重写getter方法 - (NSMutableArray *)array{ //判断是否已经有了,若没有,则进行实例化 这是重点,必须先判断 //切勿使用self.array,因为self.array会调用getter方法,造成死循环。 if (!_array) { _array = [[NSMutableArray alloc]init]; } return _array; } 用到的时候调用getter方法 NSLog(@" %p------%p ",_array,self.array); 这里的输出结果是酱紫:0x0------0x7f8eca810f30 ,这是为啥子嘞,用下划线访问的成员变量

NSMutableArray的用法

余生颓废 提交于 2020-04-07 12:08:13
// insert code here... NSLog(@"数组"); //指定多个字符串创建数组 NSArray *array; array=[NSArrayarrayWithObjects:@"0-asd",@"1-fds",@"2-哈咯",@"3-个人",nil]; //数组的长度 NSLog(@"数组长度%d",array.count); //通过索引取得对象 for(int i=0;i<array.count;i++) { NSString *secondStr=[array objectAtIndex:i]; NSLog(secondStr,nil); } //高速枚举法取得对象,Objective-C2.0开始支持, for(NSString *str in array) { NSLog(str,nil); } //对象的追加于删除 //创建空数组 NSMutableArray *MutArray=[NSMutableArray array]; //追加对象 [MutArray addObject:@"A"]; [MutArray addObjectsFromArray:array]; //插入对象 NSString *thstr=@"插入值"; [MutArray insertObject:thstr atIndex:4]; //替换对象 [MutArray

iOS TableView多级列表

送分小仙女□ 提交于 2020-04-04 06:32:18
代码地址如下: http://www.demodashi.com/demo/15006.html 效果预览 一、需求 TableView多级列表:分级展开或合并,逐级获取并展示其子级数据,可以设置最大的层级数,支持多选、单选、取消选择。 二、思路 由需求和示意图可知,这些数据元素之间存在着一对多关系,很符合 数据结构与算法 -- 树形结构 的特征。那么,我们就用树形结构中的结点(Node)来作为存储和关联数据的模型(NodeModel)。 //每个结点信息,采用的是树状结构模型 关于树状结构不了解的可以看看我的这篇文章 https://www.jianshu.com/p/c545c93f2585 @interface SLNodeModel : NSObject @property (nonatomic, strong) NSString *parentID; // 父结点ID 即当前结点所属的的父结点ID @property (nonatomic, strong) NSString *childrenID; //子结点ID 即当前结点的ID @property (nonatomic, strong) NSString *name; //结点名字 @property (nonatomic, assign) int level; // 结点层级 从1开始 @property

UIImageView的序列帧动画

倾然丶 夕夏残阳落幕 提交于 2020-03-17 08:33:04
#pragma mark - 开始动画 - (IBAction)startAnimation { // 1.1 加载所有的图片 NSMutableArray<UIImage *> *imageArr = [NSMutableArray array]; for (int i=0; i<20; i++) { // 获取图片的名称 NSString *imageName = [NSString stringWithFormat:@"%d", i+1]; // 创建UIImage对象 UIImage *image = [UIImage imageNamed:imageName]; // 加入数组 [imageArr addObject:image]; } // 设置动画图片 self.imageView.animationImages = imageArr; // 设置动画的播放次数 self.imageView.animationRepeatCount = 0; // 设置播放时长 // 1秒30帧, 一张图片的时间 = 1/30 = 0.03333 20 * 0.0333 self.imageView.animationDuration = 1.0; // 开始动画 [self.imageView startAnimating]; } #pragma mark - 结束动画 -

iOS开发中懒加载的使用和限制

只谈情不闲聊 提交于 2020-03-14 09:48:04
1 在开发过程中很多时候,很多控件和对象需要alloc为了,提高开发效率使得懒加载得以产生。 2 下边用代码解释: 1 - (NSMutableArray *)newsArr{ 2 if (!_newsArr) { 3 self.newsArr = [NSMutableArray array];//1 4 5 // 2、 _newsArr = [[NSMutableArray alloc]init]; 6 7 // 3、 _newsArr = [NSMutableArray array]; 8 } 9 10 return _newsArr ; 11 } 3 在上述代码中,我想得到一个可变数组newsArr,在1、2、3的写法中, 3.1 第一种写法:利用点语法setter对newsArr开辟空间; 3.2 第二种写法:利用allocd对属性建立的_newsArr开辟空间 3.3 第三种写法:利用便利构造器,也能获得_newsArr,但是它的不足也是显而易见的,当我们的newsArr需要常驻内存时,会出现崩溃问题; 来源: https://www.cnblogs.com/tig666666/p/4814771.html

iOS多线程之GCD详解

◇◆丶佛笑我妖孽 提交于 2020-03-08 10:02:49
GCD(Grand Central Dispatch)是基于C语言开发的一套多线程开发机制。也是目前苹果官方推荐的多线程开发方法。iOS三种多线程开发中GCD是抽象层次最高的。当然用起来也是最简单的。只是它基于C语言开发。并不像NSOperation是面向对象的开发。而是完全面向过程的。这种机制相比较于前面两种多线程开发方式最明显的优点就是它对于多核运算更佳有效。 GCD中也有一个类似于NSoperationQueue的队列,GCD统一管理整个队列中的任务。但是GCD中的队列氛围并行队列和串行队列两类。   串行队列:只有一个线程,加入到队列中的操作按添加顺序依次执行。   并发队列:有多个线程,操作进来之后他会将这些队列安排到可用的处理器上。同时保证先进来的任务优先处理。 其实在GCD中还有一个特殊的队列就是主队列,用来执行主线程上的操作任务。(从前面的演示中可以看到其实在NSOperation中也有一个主队列) 串行队列 使用串行队列时首先要创立一个串行队列,然后调用异步调用方法,在此方法中传入串行队列和线程操作即可自动执行。下面就是一个例子。 #define ROW_COUNT 5 #define COLUMN_COUNT 3 #define ROW_HEIGHT 100 #define ROW_WIDTH ROW_HEIGHT #define CELL_SPACING 10

利用 NSSortDescriptor 对 NSMutableArray 排序

偶尔善良 提交于 2020-03-08 02:55:05
有时我们在NSMutableArray中存的是网络请求返回的数据,而每一个元素又是一个NSDictionary,如果这时候需要把数组中的元素按照每个元素字典中某一个key来排序,那么我们可以利用Objective C中的类:NSSortDescriptor来快速实现需求。 通常会把排序的代码封装到一个方法中,比如下面这个方法: + ( void ) changeArray:( NSMutableArray *)dicArray orderWithKey:( NSString *)key ascending:( BOOL )yesOrNo{ NSSortDescriptor *distanceDescriptor = [[ NSSortDescriptor alloc ] initWithKey :key ascending :yesOrNo]; NSArray *descriptors = [ NSArray arrayWithObjects :distanceDescriptor, nil ]; [dicArray sortUsingDescriptors :descriptors]; [distanceDescriptor release ]; } 参数说明: dicArray:待排序的NSMutableArray。 key:按照排序的key。 yesOrNo:升序或降序排列

Sort NSmutablearray with two special keys

南楼画角 提交于 2020-03-06 09:38:59
问题 I have a tableview, its header is stored in a mutablearray, the array looks like (2005 fall, 2005 spring, 2007 summer...) When I output the tableview, I want the header in time ascending displayed. 2005 spring 2005 fall 2007 summer I used the code here: - (NSString *)tableView:(UITableView *)tableView titleForHeaderInSection:(NSInteger)section { [self.sectionKeys sortUsingSelector:@selector(localizedCaseInsensitiveCompare:)]; NSString *key = [self.sectionKeys objectAtIndex:section]; return