NSArray的Category】的更多相关文章

NSArray的Category 前言 项目中自己通过各种渠道及结合项目的经验整理了一套自己的工具包,里面有各种Category,及封装的方法,方便项目使用,今天先分享一下NSarray的Category. NSArray+LSCore.h #import <Foundation/Foundation.h> @interface NSArray (LSCore) #pragma mark - 取值 - (id)firstObject; - (id)randomObject; #pragma m…
- (NSArray *)testa:(NSDictionary *)dic { NSMutableArray *arr_M = [NSMutableArray array]; // 1.遍历每一个元素添加到集合 for (NSString *key in dic.allKeys) { for (NSString *str in dic[key]) { [arr_M addObject:str]; } } return arr_M; } - (NSArray *)testb:(NSDiction…
- (NSArray *)clearAllNullObject{ NSMutableArray *array = [self mutableCopy]; ;i < array.count;i++) { id obj = array[i]; if ([obj isKindOfClass:[NSDictionary class]]){ NSMutableDictionary *dict = [obj mutableCopy]; ; j<dict.allKeys.count; j++) { id t…
数组越界其实是很基本的问题,但是解决起来除了count的判断,还有每个调用的时候都要去判断一遍 对于不明确的数据总会有崩溃的风险 然而 每次调用都判断 那是太累了 so ..runtime&category提供了一个比较简洁的解决方案 首先把NSArray/NSMutableArray的objectAtIndex方法通过objc的runtime 里面method swizzle把方法进行替换 + (void)load{ [super load]; Method oldObjectAtIndex…
问题引入,我想给NSString类扩展一些新的方法.在Objective-C中可以有两种方法,一是继承,二是类别.本文先不讨论类别,我们用继承的方法试一下: @interface StringEx : NSString - (void)myFunc; @end @implementation StringEx - (void)myFunc { NSLog(@"myFunc"); } 我想用下面的方法使用: StringEx* str = [[StringEx alloc] initWi…
Category使得开发过程中,减少了继承的使用,避免子类层级的膨胀.合理使用,可以在不侵入原类代码的基础上,写出漂亮的扩展内容.我更习惯称之为"分类". Category和Extension类似,都是对原类的扩展,区别是前者需要提供Category的名称,并且不直接支持属性:后者为匿名,多存在于类的实现文件,观感上实现属性.变量.方法的私有效果. 主要记录分类使用过程中常涉及的内容: 1.关联对象的使用 分类虽然不直接支持属性,但是可以利用关联对象的方法,达到属性的正常使用效果. 添…
想到要如何为所有的对象增加实例变量吗?我们知道,使用Category可以很方便地为现有的类增加方法,但却无法直接增加实例变量.不过从Mac OS X v10.6开始,系统提供了Associative References,这个问题就很容易解决了.这种方法也就是所谓的关联(association),我们可以在runtime期间动态地添加任意多的属性,并且随时读取.所用到的两个重要runtime API是: OBJC_EXPORT void objc_setAssociatedObject(id o…
目标:把NSDictionary对象转换成NSMutableDictionary对象,对象内容是字符串数组,需要实现完全复制(深复制). 如果调用NSDictionary的mutableCopy方法,可以得到一个NSMutableDictionary对象,但这只是浅复制,如果我们修改NSDictionary中数组内的值(当然,数组必须是NSMutableArray),会发现,NSMutableDictionary对象内数组的值也跟着更改了.我们需要增加一个mutableDeepCopy方法来实现…
因为自己在学习这三个概念的时候,实在是走了很多的弯路,而且当我意识到这些概念在cocoa中很重要时,我便更糊涂了…或许从C++或者Java转过来的高手一看就明白,所以高手您随便拍砖,指正我的错误:新手的话,不妨稍微看看,说不定对你理解这三个概念有些帮助.  总的来说,这三个概念的用途是:扩充已存在类的功能,说白了,就是给已经有的类加上其他的功能.  首先最常用的办法是,建立子类,继承父类的特点,加上新的类的内容.好处不言自明,自由:你想创建一个什么样的类就创建什么样的类,想加什么加什么.前提是,…
细心的人会发现当我们new 一个文件的时候会发现下图的部分. 但是这个问题来了Category 和 Extension 就近又什么区别呢? 1:什么是Category? 实现这样一种场景,当我们用我们用NSArray的时候经常会遇到要去重的操作,可是自带的NSArray并没有这个方法,想要用你第一印象是自己写个类继承他,OC 给我们提供了一个方法可以直接在原有的基础上进行扩展.这就Category.分类能够做到的事情主要是:即使在你不知道一个类的源码情况下,向这个类添加扩展的方法.一个类可以有n…