首页
学习
活动
专区
圈层
工具
发布
    • 综合排序
    • 最热优先
    • 最新优先
    时间不限
  • 来自专栏三掌柜的技术空间

    iOS开发:NSSet的使用

    集合和数组的相同点:都是存储不同元素的地址,不同点:NSSet中的元素都是被自动过滤之后的不会重复的元素,NSArray中的元素却是允许重复的;NSSet是一个无顺序的集合,NSArray是一个有顺序的集合 相对来说,NSSet的处理效率比NSArray的要快。 本节内容就来简单的介绍一下NSSet的使用,并且会举一个实际使用案例来展示。 一、基本常用的方法 (一)NSSet 1、集合初始化: NSSet在初始化的时候,赋值的时候如果放入两个相同元素的话,会自动删除其中一个相同的元素。 eg: NSSet *set1 = [[NSSet alloc] initWithObjects:@“a”,@“b”,@“c”,@“d”, nil]; //初始化集合 [set1 count]; //返回集合中的个数 ]; //判断两个集合是否相等 5、判断set2是否是set3的子集 NSSet *set3 = [[NSSet alloc] initWithObjects:@“a”,@“b”,@“c”,@“d

    2K64发布于 2021-11-25
  • 来自专栏ShaoYL

    NSSet类型 以及与NSArray区别

    NSSet到底什么类型,其实它和NSArray功能性质一样,用于存储对象,属于集合; NSSet  , NSMutableSet类声明编程接口对象,无序的集合,在内存中存储方式是不连续的,不像NSArray ,NSDictionary(都是有序的集合)类声明编程接口对象是有序集合,在内存中存储位置是连续的;         NSSet和我们常用NSArry区别是:在搜索一个一个元素时NSSet比NSArray NSSet 常用方法总结 +(id)setWithObjects:obj1,obj2,...nil 使用一组对象创建新的集合 -(id)initWithObjects:obj1,obj2,....nil 判断集合是否是NSSet的子集 -(BOOL)intersectsSet:nsset 判断两个集合的交集是否至少存在一个元素 -(BOOL)isEqualToSet:nsset 判断两个集合是否相等 将nsset的所有元素添加到集合 -(void)minusSet:nsset 从集合中去掉所有的NSSet 的元素 -(void)interectSet:nsset 集合和NSSet 做交集运算

    1.5K110发布于 2018-05-11
  • 来自专栏全栈程序员必看

    touchesBegan:(NSSet*)touches withEvent:(UIEvent *)event使用

    根据不通的触摸状态,程序会调用相应的处理函数,这些函数包括以下几个: -(void)touchesBegan:(NSSet*)touches withEvent:(UIEvent *)event; -(void)touchesMoved:(NSSet*)touches withEvent:(UIEvent *)event; -(void )touchesEnded:(NSSet *)toucheswithEvent:(UIEvent *)event; -(void)touchesCancelled:(NSSet 对于这4个方法,都有两个相同的参数:NSSet类型的touches和UIEvent类型的event。其中touches表示触摸产生的所有UITouch对象,而event表示特定的事件。 – ( void )touchesEnded:(NSSet * )touches withEvent:(UIEvent * ) event { UITouch

    86120编辑于 2022-09-15
  • 来自专栏韩曙亮的移动开发专栏

    【IOS 开发】Objective-C Foundation 框架 -- 字符串 | 日期 | 对象复制 | NSArray | NSSet | NSDictionary | 谓词

    NSSet 功能与用法 (1) NSSet 简介 NSSet 功能简介 :  -- 基本属性 : 无序, 不可重复; 如果将两个相同的元素放在同一个 NSSet 中, 只会保留一个; -- 性能分析 : NSSet 使用 hash 方法存储集合中的元素, 存取 和 查找性能很好; (2) NSSet 与 NSArray 的相同之处 NSSet 与 NSArray 相同之处 :  -- 获取元素数量 : NSSet 判重原理 (1) NSSet 重复判定原理 NSSet 添加元素判断 :  -- 位置判断 : 向 NSSet 中添加元素时, NSSet 会调用对象的 hash 方法 获取对象的 哈希值, NSSet 功能与用法 (1) NSSet 简介 NSSet 功能简介 :  -- 基本属性 : 无序, 不可重复; 如果将两个相同的元素放在同一个 NSSet 中, 只会保留一个; -- 性能分析 : NSSet 判重原理 (1) NSSet 重复判定原理 NSSet 添加元素判断 :  -- 位置判断 : 向 NSSet 中添加元素时, NSSet 会调用对象的 hash 方法 获取对象的 哈希值,

    1.8K20编辑于 2023-03-27
  • 来自专栏陈满iOS

    iOS·数据结构选型:在某数据结构中避免重复字符串元素(NSArray,NSSet,NSDictionary)

    数据结构选型: 数组:查询复杂度O(N) NSArray 哈希表:查询复杂度O(1) NSSet NSDictionary 1. 另外,哈希结构在Android开发中对应的形式则类似下面的: private static HashSet<String> sectionUrlSet = new HashSet<>(); 2.1 NSSet

    1.6K20发布于 2018-09-10
  • 来自专栏浮躁的喧嚣

    系统框架--48:多用块枚举,少用for循环

    dic.allKeys[I]; NSString *obj = dic[key]; NSLog(@"dicContent--%@",obj); } //NSSet (无序) NSSet *set = [NSSet setWithObjects:@"1",@"2",@"3", nil]; NSArray *setArr = [set allObjects = nil) { NSLog(@"str:%@",dic[key]); } //NSSet(无序) NSSet *set = [NSSet setWithObjects NSSet *set = [NSSet setWithObjects:@"1",@"2",@"3", nil]; for (NSString *str in set) { NSSet *set = [NSSet setWithObjects:@"1",@"2",@"3", nil]; [set enumerateObjectsUsingBlock:^(id _Nonnull

    27710编辑于 2023-11-22
  • 来自专栏全栈程序员必看

    UITextView 手势触发 TouchesBegan 函数

    开始,在当前view中添加一个UITextView ,然后添加- (void)touchesBegan:(NSSet *)touches withEvent:(UIEvent *)event函数,可怎么也触发不了 首先说原因吧,你把UITextView 加载到当前view上,然后在当前文件中写函数(void)touchesBegan:(NSSet *)touches withEvent:(UIEvent *)event *)touches withEvent:(UIEvent *)event { } – (void)touchesMoved:(NSSet *)touches withEvent:(UIEvent *)event { } – (void)touchesCancelled:(NSSet *)touches withEvent:(UIEvent *)event { } – (void )touchesEnded:(NSSet *)touches withEvent:(UIEvent *)event { } @end 2、然后你再在view中添加改UITextView 如:

    1.7K10编辑于 2022-09-16
  • 来自专栏全栈程序员必看

    touchesBegan 触摸事件

    二、UIReponder类 UIResponder内部提供了一下方法来处理事件,父类是NSObject 1、触摸事件 1)手指按下事件 - (void)touchesBegan:(NSSet<UITouch *> *)touches withEvent:(nullable UIEvent *)event; 2)手指移动事件 - (void)touchesMoved:(NSSet<UITouch *> *) touches withEvent:(nullable UIEvent *)event; 3)手指抬起事件 - (void)touchesEnded:(NSSet<UITouch *> *)touches withEvent:(nullable UIEvent *)event; 4)意外中断事件(如打电话打扰) - (void)touchesCancelled:(nullable NSSet<UITouch *)touches withEvent:(nullable UIEvent *)event; 5)3D触摸事件 - (void)touchesEstimatedPropertiesUpdated:(NSSet

    1.4K20编辑于 2022-09-15
  • 来自专栏日常技术分享

    ios ARC中如何判断一个对象释放了

    首先我们来了解一下NSHashTable NSHashTable效仿了NSSet(NSMutableSet),但提供了比NSSet更多的操作选项,尤其是在对弱引用关系的支持上,NSHashTable在对象 相较于NSSet,NSHashTable具有以下特性: NSSet(NSMutableSet)持有其元素的强引用,同时这些元素是使用hash值及isEqual:方法来做hash检测及判断是否相等的。 而这一点在NSSet是做不到的。 它的成员可以在添加时被拷贝。 它的成员可以使用指针来标识是否相等及做hash检测。 它可以包含任意指针,其成员没有限制为对象。

    2.8K20发布于 2018-09-13
  • 来自专栏日常技术分享

    iOSNSSet 和 NSArray的区别

    NSSet: ●NSSet , NSMutableSet是无序的集合,在内存中存储方式是不连续的 ●通过anyObject来访问单个元素 ●遍历NSSet中的每个元素。 通过forin循环来遍历 好处:在搜索一个一个元素时NSSet比NSArray效率高,主要是它用到了一个算法hash 。

    87010发布于 2020-06-16
  • 来自专栏全栈程序员必看

    ios事件-触摸事件3(UIButton 和 pointInSide()、hitTest()、touchesBegan()、touchesMoved()、touchesEnded()的关系)

    :(MyButton *)button withEvent:(UIEvent *)event { NSLog(@"你点击了button"); } - (void)touchesBegan:(NSSet NSLog(@"vc, %s", __func__); [super touchesBegan:touches withEvent:event]; } - (void)touchesMoved:(NSSet NSLog(@"vc, %s", __func__); [super touchesMoved:touches withEvent:event]; } - (void)touchesEnded:(NSSet "vc, %s", __func__); [super touchesEnded:touches withEvent:event]; } - (void)touchesCancelled:(NSSet NSLog(@"%s", __func__); [super touchesBegan:touches withEvent:event]; } - (void)touchesMoved:(NSSet

    84520编辑于 2022-09-15
  • 来自专栏猿人谷

    iOS Programming – 触摸事件处理(2)

    根据不通的触摸状态,程序会调用相应的处理函数,这些函数包括以下几个:             -(void)touchesBegan:(NSSet *)touches withEvent:(UIEvent *)event;             -(void)touchesMoved:(NSSet *)touches withEvent:(UIEvent *)event;             -( void)touchesEnded:(NSSet *)touches withEvent:(UIEvent *)event;             -(void)touchesCancelled:(NSSet 对于这4个方法,都有两个相同的参数:NSSet类型的touches和UIEvent类型的event。其中touches表示触摸产生的所有UITouch对象,而event表示特定的事件。 例如: -(void)touchesEnded:(NSSet *)touches withEvent:(UIEvent *)event {     UITouch *touch =  [touches 

    1.3K70发布于 2018-01-17
  • 来自专栏mukekeheart的iOS之旅

    OC学习13——Foundation框架中的集合

    OC的集合大致可以分为:NSArray、NSSet、NSDictionary三种体系。 1、NSSet是一个广泛使用的集合,NSSet按Hash算法来储存集合中的元素,因此具有很好的存取和查找性能。也正因为是才用Hash算法储存元素,NSSet不能保证元素的添加顺序,顺序可能会发生变化。 集合, 25 // 故意传入两个相等的元素, NSSet集合只会保留一个元素 26 NSSet* set1 = [NSSet setWithObjects: 27 如果不想等,则NSSet依然认为这两个元素不一样,NSSet依然会将该对象添加到底层hash表对应hashCode值对应的位置,只是将这个位置形成一个链表。 3、NSMutableSet继承自NSSet,它代表一个集合元素可变的NSSet集合。

    2.4K80发布于 2018-02-27
  • 来自专栏全栈程序员必看

    touchesBegan: withEvent: 不执行/完美收起键盘

    eg:写一个category类目 UIScrollView + Event – (void)touchesBegan:(NSSet<UITouch *> *)touches withEvent:(UIEvent 项目中有无数个这样的操作) 材料:BaseViewController(这是所有ViewController的基类) 1.在BaseViewController写入 -(void)touchesBegan:(NSSet 2.写一个category类目 UIScrollView + Event.h – (void)touchesBegan:(NSSet<UITouch *> *)touches withEvent:( 写一个category类目 UIButton + Event.h – (void)touchesBegan:(NSSet<UITouch *> *)touches withEvent:(UIEvent

    1.1K30编辑于 2022-09-15
  • 来自专栏滕先生的博客

    touchesBegan 触摸事件一、概念介绍二、方法介绍三、参数介绍:touches四、参数介绍:event

    触摸事件 (1)手指按下事件 - (void)touchesBegan:(NSSet<UITouch *> *)touches withEvent:(nullable UIEvent *)event; - (void)touchesEnded:(NSSet<UITouch *> *)touches withEvent:(nullable UIEvent *)event; (4)意外中断事件(如电话打扰 ) - (void)touchesCancelled:(nullable NSSet<UITouch *> *)touches withEvent:(nullable UIEvent *)event; (5)3D触摸事件 - (void)touchesEstimatedPropertiesUpdated:(NSSet * _Nonnull)touches 2. nullable NSSet <UITouch *> *)touchesForGestureRecognizer:(UIGestureRecognizer *)gesture;

    3.1K100发布于 2018-05-18
  • 来自专栏全栈程序员必看

    关于iPhone多点触控

    虽然这个问题很简单,但是对于我这接触两天的菜鸟来说也弄了很久,网上又找不到相关的解决方法,避免其他人和我一样,还是记录一下 一般网上找到的教程是这么教: -(void )touchesBegin:(NSSet NSStringFromCGPoint(point1)); NSLog(@"point2:%@",NSStringFromCGPoint(point2)); } 但是这里面首先NSArray这个累不知道能不能去NSSet 所以你想去两个手指的话这肯定不行,虽然编译器不会报错,但是一碰就死机 其实只要改个方法就行,用touchesMoved -(void )touchesMoved:(NSSet *)touches withEvent :(UIEvent *)event { NSSet *allTouches = [event allTouches]; UITouch *touch1 = [[allTouches allObjects

    86120编辑于 2022-07-15
  • 来自专栏全栈程序员必看

    第10月第28天 touchesBegan hittest「建议收藏」

    -(void)touchesBegan:(NSSet *)touches withEvent:(UIEvent *)event { [[self nextResponder] touchesBegan touches withEvent:event]; [super touchesBegan:touches withEvent:event]; } -(void)touchesMoved:(NSSet touches withEvent:event]; [super touchesMoved:touches withEvent:event]; } -(void)touchesEnded:(NSSet

    25810编辑于 2022-09-15
  • 来自专栏mukekeheart的iOS之旅

    OC学习14——谓词

    -(void)filteredUsingPredicate:(NSPredicate *)predicate::使用制定谓词过滤NSMutableArray集合,剔除该集合中不符合谓词条件的元素   NSSet 18 [array filterUsingPredicate:pred1]; 19 NSLog(@"值大于50的元素:%@" , array); 20 NSSet * set = [NSSet setWithObjects: 21 [[FKUser alloc] initWithName:@"孙悟空" 22 @"name CONTAINS '大王'"]; 34 // 执行过滤,过滤后集合只剩下两个元素 35 NSSet * set = [NSSet setWithObjects: 8 [[FKUser alloc] initWithName:@"孙悟空" 9

    1.5K100发布于 2018-02-27
  • 来自专栏日常技术分享

    iOS数组去重方式

    ; } } 利用NSDictionary for (NSNumber *n in originalArr) { [dict setObject:n forKey:n]; } #######NSSet NSSet *set = [NSSet setWithArray:originalArr];

    70010发布于 2020-06-16
  • 来自专栏Helloted

    事件传递、响应者链条

    一、事件 iOS里有三种事件:触摸(touch)、加速(motion)、远程控制 在UIResponder里,有以下事件处理 // 触摸事件 - (void)touchesBegan:(NSSet *)touches withEvent:(UIEvent *)event; - (void)touchesMoved:(NSSet *)touches withEvent:(UIEvent *)event ; - (void)touchesEnded:(NSSet *)touches withEvent:(UIEvent *)event; - (void)touchesCancelled:(NSSet * 对象继续将事件或消息传递给UIApplication对象 如果UIApplication也不能处理该事件或消息,响应者链条从头到尾,都未处理,则将其丢弃 事件不处理,指的是touchesBegan:(NSSet

    1.4K10编辑于 2022-06-06
领券