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

Objective-C中NSArray类的解读

NSArray中属性与方法: //获取数组中元素个数 @property (readonly) NSUInteger count; //通过下标获数组中的元素 - (ObjectType)objectAtIndex...:(NSUInteger)index; //初始化方法 - (instancetype)init; //通过C语言风格的数组创建NSArray对象 需要注意,C数组中需要为Objective对象,cnt...opts usingBlock:(void (^)(ObjectType obj, NSUInteger idx, BOOL *stop))block NS_AVAILABLE(10_6, 4_0); //在一个下标集合中枚举...passingTest:(BOOL (^)(ObjectType obj, NSUInteger idx, BOOL *stop))predicate NS_AVAILABLE(10_6, 4_0); //同上 在一定下标集合中遍历...中属性与方法: //向数组中追加一个元素 - (void)addObject:(ObjectType)anObject; //向数组某个位置插入一个元素 - (void)insertObject:(ObjectType

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

    在VS中调试LINQ(Lambda)

    VS自带调试:lambda表达式打断点 VS插件OzCode LinqPad VS自带调试 在VS里,是可以对Linq调试的,不过一般打断点都会打在整个语句上,这时候我们要换个打法,把断点打在lambda...上面的2种方法,都是要把位置选在lambda语句内,因为这个语句才是方法体,必须要定位到方法体内才行!否则还是打在外面了!...有4种方法: VS里使用【快速监视】 VS里使用断点设置里的【操作】 使用OzCode 使用LinqPad VS里使用【快速监视】 首先在整个语句上设置断点,当程序运行到该断点时,在集合对象上右键->快速监视...某人说:vs没事儿给你抽个风,整个调试器都直接挂,必须重启调试才能继续 图示 VS里使用断点设置里的【操作】 这种方式里的断点是设置在lambda表达式上,和前面的VS里使用【快速监视】 里的断点位置不一样...使用OzCode VS插件OzCode很强大,每一个Linq语句的执行结果都能统计并展示出来,详情参考:如何在C#中调试LINQ查询 和 如何在C#中调试LINQ查询 使用LinqPad LinqPad

    4.7K30

    在Windows中安装VS Code

    本文介绍Visual Studio Code(VS Code)软件在Windows操作系统电脑中的下载、安装、运行方法。...在我们之前的文章Visual Studio 2022下载、安装与使用中,介绍过Visual Studio软件在电脑中的安装方法。...较之Visual Studio,VS Code则更加轻便,对系统的要求较低,且可以跨不同操作系统使用;总的来说,Visual Studio更适合大型企业级项目和需要复杂工具链的开发场景,而VS Code...当然,如果是在其他操作系统中安装,则得到的可执行文件不一定是.exe格式的,大家按照实际情况来操作即可。   双击上述.exe格式文件,即可开始安装流程,如下图所示。   ...可以根据指引,逐一浏览、设置一下对应的内容;每次完成一项内容,就可以在该内容左侧的勾选框中选中,表示当前项目已完成;如下图所示。   完成全部指引后,即可回到原始的VS Code首页,如下图所示。

    13010

    iOS-Foundation框架中常用的类

    框架提供了什么样的方法,能够达到什么效果,用到的时候直接去API中查找即可,避免因为不知道有这些方法,而走弯路。...当我们调用NSString的类方法来创建对象的时候.创建的字符串对象是存储在堆区。...另外NSArray也提供了在block中遍历数组元素的方法 [arr enumerateObjectsUsingBlock:^(id _Nonnull obj, NSUInteger idx, BOOL...是NSArray的子类,所以NSMutableArray也可以用来存储数据,唯一不同的是NSMutableArray是可变数组,存储在该数组中的元素可以删除,也可以动态增加元素,其他用法均与NSArray...; // 删除指定元素 - (void)removeObjectIdenticalTo:(ObjectType)anObject inRange:(NSRange)range; // 在指定范围删除与之相同的元素

    1.7K100

    iOS_Runtime是什么?原理?作用?怎么实现weak?使用

    就是在程序运行的过程中,有一套C语言级别的API,它把代码从OC转换成C 2、原理: OC是基于C,并添加了面向对象的特性,将很多静态语言在编译和链接时做的事放到了runtime运行时来处理 C:函数的调用在编译时就知道会调用哪个函数...OC:在编译的时候并不知道,只在正在运行时才会根据函数名称找到对应的函数 3、作用 获取属性、方法、成员变量、协议(包括私有的) 给分类动态添加属性、方法 字典转模型 拦截并替换方法 实现NSCoding...(我有在一次面试中遇到) Runtime对注册的类会进行布局,对于weak对象会放入一个hash表中,用weak指向的`对象的内存地址`作为key。...当对象的引用计数为0时会调用dealloc方法,此时会在weak表中搜索,将所有weak对象置为nil。...`的`Category`里拦截增删改方法,进行判空处理 (其他的NSArray、NSDictionary、NSMutableArray、NSMutableDictionary等也可以做相应的处理,防止越界

    40220

    Objective-C中的集合类

    在Objective-C中的集合类中主要包括不可变的数组--NSArray,  可变的数组--NSMutableArray,   不可变的字典--NSDictionary,    可变的字典--NSMutableDictionary...一、数组         1.不可变的数组  NSArray             数组是有序对象的集合,用来存储对象的有序列表,在OC中数组中必须存的是对象,不能是基本数据类型,若想存入基本数据类型...NSArray也是OC中的一个对象,使用NSArray也需要进行实例化,前面的博客在类的初始化中提到了便利初始化函数和便利构造器,在NSArray中也少不了这两样东西我们可以通过NSArray的便利初始化函数或者便利构造器进行...            NSArray的容量是固定的,而NSMutableArray的容量是可变的,我们可以在NSMutableArray实例化的时候先初始化一个容量,不过这个容量不是固定的,不够的时候会自动增加...= set2"); }   //查看一个元素是否在一个set中 if ([set1 member:@"aa"]) {     NSLog(@"aa 在set1中"); }     ​运行结果为: 1

    1.1K70

    接口与API设计--18:尽量使用不可变对象

    withPrice:(NSInteger)price; @end 如果想修改数据,且不想让外人知道,通常可以在对象内部分类中将其设置为readwrite #import "Phone.h" //分类中重新声明...,以此修改对象中的可变属性 为什么不能直接把phoneArray定义成可变的,通过phoneArray来控制?...比如在添加或者删除时,Phone对象可能要执行其他相关操作,如果直接从底层修改了内部用于存储的phoneArray,在Phone对象不知情时,直接修改phoneArray可能会让对象间各数据不一致 #import...return [self.savePhoneArray copy]; } - (void)removePhone:(Phone *)phone{ [self.savePhoneArray removeObject...:phone]; } @end 参考 Effective+Objective-C 2.0 编写高质量iOS与OS X代码的52个有效方法

    14710

    setImmediate() vs setTimeout() 在 JavaScript 中的区别

    setImmediate() vs setTimeout() 在 JavaScript 中的区别 在 JavaScript 中,setImmediate() 和 setTimeout() 都用于调度任务...JavaScript 的异步特性 JavaScript 以其非阻塞、异步行为而闻名,尤其是在 Node.js 环境中。...在 Node.js 中,事件循环处理不同的阶段,每个阶段负责执行某些类型的回调。它帮助管理非阻塞任务,确保函数可以异步执行。在这些阶段中,有不同的队列。...相反,它被放置在宏任务队列中,以便在下一个可用机会执行。 setImmediate() 另一方面,setImmediate() 设计用于在 I/O 事件完成后执行回调,在同一事件循环迭代中。...理解这些差异有助于你精确控制代码的运行时间,这在高性能应用程序中至关重要,因为时间和效率非常重要。 参考 setImmediate() vs setTimeout() in JavaScript

    11810

    iOS中runtime的简单用法——动态绑定

    先说需求:在tableView中每一行有一个删除按钮,点击删除当前行。...(很多项目都会用到吧) 写一段废话:写例子的时候一直想找一个大家常用的功能做,但当这个例子写完我又犹豫要不要传上来,原因是对于这个功能,其实有其他更好的方法解决,其中我代码中的(方法一)就是其中一个不错的解决方案...UITableViewDataSource> @property (nonatomic,strong) UITableView *tableView; @property (nonatomic,strong) NSMutableArray...NSIndexPath *indexPath = objc_getAssociatedObject(button, deleteButtonKey); [self.dataList removeObject...因为这里做删除处理,数组的count会变化,所以此处必须要刷新方法重新绑定赋值(如果在别的例子中只做传值,则不需要) [self.tableView reloadData]; } - (CGFloat

    1.1K50
    领券