首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

Objective-C集合类

下面详细介绍Objective-C集合类以及每个集合类用法,学过其他面向对象编程语言小伙伴们看到OC集合类会有种莫名亲切感,理解起来问题不大,可以类比Java集合类去学习...在Objective-C集合类主要包括不可变数组--NSArray,  可变数组--NSMutableArray,   不可变字典--NSDictionary,    可变字典--NSMutableDictionary...一、数组         1.不可变数组  NSArray             数组是有序对象集合,用来存储对象有序列表,在OC数组必须存对象,不能是基本数据类型,若想存入基本数据类型...(void) addObject : (id) object;     ​    ​    ​3.删除集合对象     ​    ​    ​    ​-(void) removeAllObjects...    ​    ​前面不止一次提到在OC集合类是不能放基本数据类型,那么我们如何把基本数据类型封装成对象呢?

1.1K70
  • 您找到你想要的搜索结果了吗?
    是的
    没有找到

    你会怎么替换json对象key?

    以上代码可以很好地完成工作,从而将obj对象"_id"替换成"id"。 在大多数情况下,这种方式不会带来什么问题,但是,如果你需要将obj对象序列化到文档并比较差异,你就会看到问题。...,并且由于在替换过程我们删除了之前key,所以导致序列化之后obj与之前obj存在较大差异。...但所有这些示例无一例外都不能同时满足下面两个要需: 保留要替换key在原json对象顺序。既保证在JSON.stringify()执行之后输出字符串key顺序和原json对象是一致。...如果我们对res某些key进行替换,而返回一个新json对象的话,那么这个修改就不会反应到obj对象。...在这个过程,如果遇到真正需要替换key,则不再进行二次替换

    1.7K10

    iOS 启动优化--二进制重排

    (Path to Link Map File)找到LinkMap文件打开,我们可以通过替换方法位置重复改步骤发现,类里面函数加载顺序是从上到下,通过替换Build Phases -- > Compile...--> Order File设置自定义.order后缀文件路径,将需要重排符号按顺序写在里面,当Xcode编译时会按照.order文件符号顺序加载,我们可以通过下面几种方法获得APP启动时运行函数...HOOK objc_msgSend:由于objc_msgSend参数是可变,需要汇编获取,而且只能获取到OC方法和Swift@objc方法 静态扫描:扫描 Mach-O文件 特定段和节里面所存储符号以及函数数据...,即当前函数返回地址 - 1 当前函数调用者地址,即上一个函数返回地址 */ void *PC = __builtin_return_address(0); //...,即当前函数返回地址 - 1 当前函数调用者地址,即上一个函数返回地址 */ void *PC = __builtin_return_address(0); //

    1.3K60

    Objective—C语言新魅力——Nullability、泛型集合与类型延拓

    二、Nullability检测支持         在swift语言中,通过!和?可以将对象声明成Optional,用于在开发中标记这个对象是否可以为空。...1、有类型约定集合         在Xcode7,我们可以给集合类型添加一个泛型约定,如下:  NSMutableArray *array = [[NSMutableArray...同样,如果我们向这个数组追加类型不匹配元素,如下:     NSMutableArray *array = [[NSMutableArray alloc]init];     ...; -(void)addObject:(nonnull Type)obj; @end 创建一个自定义数组对象,并向其中添加一个UIButton,我们会看到有如下一个警告: ?...但是以后就不需要了,我们在声明这个数组时加上一个__kindof修饰符: @property(nonnull,strong,nonatomic)NSMutableArray<__kindof UIView

    1K30

    OC知识--Foundation框架详尽总结之『数组类』

    , 27, 76}; 只能存放一种类型数据(类型必须一致) 不能很方便地动态添加数组元素、不能很方便地动态删除数组元素(长度固定) Foundation数组是有序对象集合 一般情况下,一个数组元素都是一种特定类型...只能存放任意OC对象, 并且是有顺序 不能存储非OC对象, 比如int\float\double\char\enum\struct等 NSArray不能存储nil,因为NSArray认为nil是数组结束...NSArray排序 1.NSArray排序 Foundation自带类排序 使用compare方法对数组元素进行排序, 那么数组元素必须是Foundation框架对象, 也就是说不能是自定义对象...:@"1",@"2", nil]; 添加一个元素- (void)addObject:(id)object; NSMutableArray *arr = [NSMutableArray array];...[arr addObject:@"abc"]; NSLog(@"%@",arr); 输出结果: ( abc ) 添加otherArray全部元素到当前数组- (void)addObjectsFromArray

    70040

    iOS 查找字符串 相同 子字符串位置 range

    问题:解决替换同一个字符串多个相同字符eg.  xxx这个超级大土豪白送xxx一个!赶快来抢把!...将第一个xxx换成名字 将第二个xxx换成物品 两种办法    第二种办法更灵活一点 //第一种办法简单粗暴(思路获取第一次xxx出现位置然后替换成名字 替换之后string中就只有一个xxx了  然后用物品替换...string仅有的一个xxx) //        NSRange range = [share6 rangeOfString:@"xxx"];//获取第一次出现位置 //        share6...xxx所在index - (NSMutableArray *)getRangeStr:(NSString *)text findText:(NSString *)findText {     NSMutableArray...= 0) {         [arrayRanges addObject:[NSNumber numberWithInteger:rang.location]];//将第一次加入到数组

    3.7K50

    map对象虽然不能修改,但是可以替换

    对象与指针对象 假设有一个 map 对象 map[string]Person , 其中 Person 定义如下。...是一个 struct type Person struct { Age int } 现在有一个需求, map Person 对象年龄为 0 , 则将其默认值设置为 18。...很显然, 由于 map[string]Person 中保存是 值对象 ,因此通过任意方式获取都是 值对象副本 , 所有修改都是在副本上, 不能 修改真实值。...*Person 是 指针对象 , 获取到是 指针对象副本, 而 指针副本 也指向了原始数据, 就 可以修改 真实值。...虽然不能被修改, 但是能被覆盖 然而, map 本身可以被 被认为 是一个指针对象。因此可以通过 同名 key 赋值覆盖方式, 实现 修改效果。

    3K20

    (转)iOS开发之UICollectionViewController系列(三) :UICollectionView自定义瀑布流

    第三个方法就是根据indexPath来获取Cell所绑定layoutAtrributes, 然后去更改UICollectionViewLayoutAttributes对象一些属性并返回,第四个是为Header...(4)CellY轴坐标计算:通过Cell所在列上一个CellY轴坐标,Padding, 和 上一个Cell高度就可以计算下一个CellY坐标,并记录在Y坐标的数组中了。...:@(cellHeight)]; } } 8.初始化CellY轴坐标数组,因为是瀑布流,瀑布流特点是每列CellX轴坐标是相同,我们只需要根据本列上一个CellY轴坐标来确定本列中将要插入...Objective-C /** * 求CellY数组最大值并返回 */ - (CGFloat) maxCellYArrayWithArray: (NSMutableArray *...Objective-C /** * 求CellY数组最小值索引 */ - (CGFloat) minCellYArrayWithArray: (NSMutableArray *

    6K40

    深入浅出 Runtime(一):初识

    举例 对于 NSString *string = [[NSMutableArray alloc]init]; 编译时:编译器进行类型检查时候,由于给一个NSString类型指针赋值是一个NSMutableArray...但是编译器会将 string当作NSString实例,所以string对象调用NSString方法,编译没有任何问题,而调用NSMutableArray方法,编译会直接报错。...运行时:由于string实际上是指向一个NSMutableArray对象NSMutableArray对象没有stringByAppendingString:方法,所以导致crash:unrecognized...addObject:@"abc"]; //❌No visible @interface For 'NSString' declares the selector 'addObject:' Runtime...// 判断对象是否实现了特定协议定义方法 - (BOOL)conformsToProtocol:(Protocol *)protocol + (BOOL)conformsToProtocol:(Protocol

    1K20

    iOS开发之窥探UICollectionViewController(三) --使用UICollectionView自定义瀑布流

    通过下述方法设定每个CellUICollectionViewLayoutAttributes对象参数,为了实现瀑布流所以我们只需要设置每个Cellframe即可。...(4)CellY轴坐标计算:通过Cell所在列上一个CellY轴坐标,Padding, 和 上一个Cell高度就可以计算下一个CellY坐标,并记录在Y坐标的数组中了。...:@(cellHeight)]; 12 } 13 14 } 7.初始化CellY轴坐标数组,因为是瀑布流,瀑布流特点是每列CellX轴坐标是相同,我们只需要根据本列上一个CellY...1 /** 2 * 求CellY数组最大值并返回 3 */ 4 - (CGFloat) maxCellYArrayWithArray: (NSMutableArray *) array{...1 /** 2 * 求CellY数组最小值索引 3 */ 4 - (CGFloat) minCellYArrayWithArray: (NSMutableArray *) array{

    1.3K100

    label 图片替换文字

    [re matchesInString:richText options:0 range:NSMakeRange(0, richText.length)];         //用来存放字典,字典存储是图片和图片对应位置...        NSMutableArray *imageArray = [NSMutableArray arrayWithCapacity:resultArray.count];        ...//根据匹配范围来用图片进行相应替换         for(NSTextCheckingResult *match in resultArray) {             //获取数组元素得到...range             NSRange range = [match range];             //获取原字符串对应值             NSString *subStr...                    textAttachment.image = [UIImage imageNamed:model.strpic];                     //把附件转换成可变字符串,用于替换掉源字符串表情文字

    1.3K40

    label 图片替换文字

    [re matchesInString:richText options:0 range:NSMakeRange(0, richText.length)];         //用来存放字典,字典存储是图片和图片对应位置...        NSMutableArray *imageArray = [NSMutableArray arrayWithCapacity:resultArray.count];        ...//根据匹配范围来用图片进行相应替换         for(NSTextCheckingResult *match in resultArray) {             //获取数组元素得到...range             NSRange range = [match range];             //获取原字符串对应值             NSString *subStr...                    textAttachment.image = [UIImage imageNamed:model.strpic];                     //把附件转换成可变字符串,用于替换掉源字符串表情文字

    1.2K30

    @property 关键字区别 - copy & mutableCopy

    made in 小蠢驴配图        对于现在大部分iOS开发者来说,无论是在职,打算跳槽,或者还在找工作,亦或还在培训,将来可能面临找工作(现在应该比较少了),面试都无疑是一座摆在面前无法逾越大山了吧...,可以执行比如addObject 操作,可以写出addObject方法,但是运行时候会报错,可以理解为:NSMutable + copy = immutable(不可变); ·array0 的话,...关键点来了:你遇到过NSMutableArray 添加对象时候,失效问题吗!...所以这里本质是给一个不可变数组(NSArray 添加对象)肯定报错 ---- 第三步:改第二步,使用mutableCopy实现 NSArray ->转 NSMutableArray 没有添加成功 关键问题来了...-->说明他们不是同一个对象了,所以我们在对 arrayM.mutableCopy 进行操作时候,arrayM并不会受到影响,所以上面的arrayM.mutableCopy - addObject 方法执行完

    87070

    php替换

    将short_open_tag = Off 改成On 开启以后可以使用PHP短标签: <?= 同时,只有开启这个才可以使用 <?= 以代替 <? echo 2....将 asp_tags = Off 改成On 同样可以在php <%= 但是短标签不推荐使用 ============================= 是短标签 是长标签 在php配置文件(php.ini)中有一个short_open_tag值,开启以后可以使用PHP短标签: 同时,只有开启这个才可以使用 <?= 以代替 <? echo 。...在CodeIgniter视频教程中就是用这种方式。 但是这个短标签是不推荐,使用才是规范方法。只是因为这种短标签使用时间比较长,这种特性才被保存了下来。...不管short_open_tag 是 Off还是on都可以正常执行,不管PHP5.6还是PHP5.3,还是php7.1一样,short_open_tag不生效; 但asp_tags是可以生效

    2.9K10
    领券