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

NSMutableArray计数始终返回零

您好!关于NSMutableArray计数始终返回零的问题,这可能是由于您在初始化或添加元素时出现了错误。以下是一些建议和解决方案:

  1. 确保您已正确初始化NSMutableArray。您可以使用以下代码初始化一个空的NSMutableArray
代码语言:objective-c
复制
NSMutableArray *array = [NSMutableArray array];
  1. 确保您已正确添加元素到数组中。要添加元素,您可以使用addObject:方法:
代码语言:objective-c
复制
[array addObject:@"example"];
  1. 如果您仍然遇到问题,请检查您的代码以确保您没有在其他地方错误地修改了数组。
  2. 如果您仍然无法解决问题,请提供更多关于您的代码的详细信息,以便我们能够更好地帮助您。

关于NSMutableArray的详细信息,请参阅Apple官方文档

页面内容是否对你有帮助?
有帮助
没帮助

相关·内容

Objective-C中的深拷贝和浅拷贝

引用计数每次加一。返回对象是否可变与被复制的对象保持一致。                 2.copy:对于可变对象为深复制,引用计数不改变;对于不可变对象是浅复制, 引用计数每次加一。...始终返回一个不可变对象。                   3.mutableCopy:始终是深复制,引用计数不改变。始终返回一个可变对象。     ...浅拷贝获得的对象的地址和原有对象的地址一致                 3.而深拷贝返回新的内存地址,并且返回的对象为可变对象      2.非容器 + 可变对象 + retain + copy +...引用计数每次加一。返回对象是否可变与被复制的对象保持一致。                 2.copy:对于可变对象为深复制,引用计数不改变;对于不可变对象是浅复制, 引用计数每次加一。...始终返回一个不可变对象。                   3.mutableCopy:始终是深复制,引用计数不改变。始终返回一个可变对象。

1.1K90

Mybatis使用generatedKey在插入数据时返回自增id始终为1,自增id实际返回到原对象当中的问题排查

今天在使用数据库的时候,遇到一个场景,即在插入数据完成后需要返回此数据对应的自增主键id,但是在使用Mybatis中的generatedKey且确认各项配置均正确无误的情况下,每次插入成功后,返回的都是...终于凭借着一次Debugg发现的问题,原来在使用Mabatis中的insert或者insertSelective方式插入时,如使用int insert(TestGenKey testGenKey)时,返回值...int表示的是插入操作受影响的行数,而不是指的自增长id,那么返回的自增id到底去哪里了呢?...通过下面的Debugg我们知道自增id返回到testGenKey的原对象中去了。 举例示范配置 数据库示例表  generator的配置文件 <?...sex.trim(); } } 测试及Debugg 编写测试方法测试插入 插入成功后观察对应的变量对应的值 总结:调用Insert后插入操作之后,所得到自增长Id被赋值到原对象当中,而不是返回

1.6K10

《Objective-C高级编程》温故知新之自动引用计数

从自动引用计数概念开始 概念:自动引用计数是指内存管理中对内存管理中对引用采取自动计数计数。...比如NSMutableArray类中的 array类方法 id obj = [NSMutableArray array]; //取得的对象存在,但自己不持有对象 使用retain可持有对象 [obj...image.png alloc类方法用struct obj_layout 中的 retain 整数来保存引用计数,并将其写入内存头部,该对象内存块全部置0后返回。...顾名思义,它是用于自己持有(retain)对象的函数,但它持有的对象应为返回注册在autoreleasepool中对象的方法,或者是函数的返回值。..._objc_autoreleaseReturnValue与之相对应,用于NSMutableArray类的array类方法等返回对象的实现上。

60350

iOS中的浅复制与深复制

在OC中,因为采用内存计数的方式管理内存,所以浅复制时会对同一个内容计数加一,深复制则不会。 在OC中,复制操作有copy和mutableCopy两种方法,那哪种是浅复制哪种是深复制呢?...,但是要注意,copy返回的是不可变对象,也就是说即使你对一个NSMutableString做copy操作,返回给另一个NSMutableString,然后去对这个NSMutableString做变化操作...),copy和mutableCopy都是深复制,都会创建一个新的同样的内容来返回,但是要注意两点,一是copy返回的还是不可变对象,二就是上面说的,这个深复制只是单层深复制,里面包含的元素还是指针浅复制...*mCopyArray = [array mutableCopy];// 单层深复制 NSMutableArray *array = [NSMutableArray arrayWithObjects...NSKeyedArchiver archivedDataWithRootObject:oldArray]]; 结 以上就是OC中浅复制与深复制的各种应用了,要自己测试到底操作是浅复制还是深复制,可以通过看对象的引用计数是否增加

50720

iOS - 老生常谈内存管理(三):ARC 面世

在《从 MRC 说起 —— 你不持有通过引用返回的对象》章节中也说到,Cocoa 中的一些方法指定通过引用返回对象(即,它们采用ClassName **或id *类型的参数),常见的就是使用NSError...uintptr_t _objc_rootRetainCount(id obj); 打印上面代码的obj对象的引用计数,发现其引用计数确实增加。...编译器处理从 Cocoa 方法返回的 CF 对象 编译器知道返回Core Foundation对象的Objective-C方法遵循历史 Cocoa 命名约定。...)retainWeakReference; 这两个方法的默认实现是返回YES。...对于已释放的对象以及不正确的对象地址,有时也返回 “1”。另外,在多线程中使用对象的引用计数数值,因为存在竞争条件的问题,所以取得的数值不一定完全可信。

2K10

OC - 属性关键字和所有权修饰符

2.修饰弱引用,不增加对象引用计数,主要可以用于避免循环引用。3.weak 修饰的对象在被释放之后,会自动将指针置为 nil,不会产生悬垂指针。...使用规范: 对于属性、方法返回值、方法参数的修饰,使用:nonnull/nullable; 对于 C 函数的参数、Block 的参数、Block 返回值的修饰,使用:_Nonnull/_Nullable...例如,指定一个指向nullable对象的nonnull指针,可以使用_Nullable id * _Nonnull; 特殊类型的NSError **经常用于通过方法参数返回错误,因此始终假定它是指向nullable...(深浅拷贝) @property (copy) NSMutableArray *array; 答:不论赋值过来的是NSMutableArray还是NSArray对象,进行copy操作后都是NSArray...由于属性被声明为NSMutableArray类型,就不避免的会有调用方去调用它的添加对象、移除对象等一些方法,此时由于copy的结果是NSArray不可变对象,对NSArray对象调用添加对象、移除对象等方法

1.3K31

内存管理说明白点

在书中一句话总结成了“ARC(Automatic Reference Counting)代表的是自动引用计数,自动引用计数是指内存管理中对引用采取自动计数的技术”。...)使用的人多了一个,加1,计数值就从0变成了1       2、之后每当上班的人多一个(对象的使用环境多一个),那我们的引用计数就+1       3、下班后上班的人少一个( 对象的使用环境少一个),那我们的引用计数就...-1       4、最后一个人也走了,引用计数再-1就变成了0,没人再去使用对象,这时候引用计数变成0,我们就废弃对象       要结合它说的这个例子去理解引用计数相信还是比较容易的,下面再说说书中总结的内存管理的思考方式...最后,在Cocoa框架中,也有许多的类方法用于返回 autorelease  对象,比如 NSMutableArray 类的 arrayWithCapacity 类方法,比如下面两个方法是一样的,只不过在...ARC环境中不需要我们自己再去写 autorelease NSMutableArray * array = [NSMutableArray arrayWithCapacity:1]; NSMutableArray

42720

《Objective-C-高级编程》干货三部曲(一):引用计数

,无法持有这个返回的对象。...但是我们可以通过某个操作来持有这个返回的对象:这个方法就是通过retain方法来让指针变量持有这个新生成的对象: id obj = [NSMutableArray array];//非自己生成并持有的对象...[obj retain];//持有新生成的对象 注意,这里[NSMutableArray array]返回的非自己持有的对象正是通过上文介绍过的autorelease方法实现的。...调用alloc或者retain方法后,引用计数+1。 调用release后,引用计数-1。 引用计数为0时,调用dealloc方法废弃对象。...而关于init方法的要求则更为严格: 必须是实例方法 必须返回对象 返回对象的类型必须是id类型或方法声明类的对象类型 4.

1.7K40

【从学习python 】26. 函数参数与返回值的应用

(一) 一、“返回值”介绍 现实生活中的场景: 我给儿子10块钱,让他给我买个冰淇淋。...,只有调用者拥有了这个返回值,才能够根据当前的温度做适当的调整 综上所述: 所谓“返回值”,就是程序中函数完成一件事情后,最后给调用者的结果 使用返回值的前提需求就是函数调用者想要在函数外使用计算结果...二、带有返回值的函数 想要在函数中把结果返回给调用者,需要在函数中使用return 如下示例: def add2num(a, b): c = a+b return c # return...,最后儿子给你冰淇淋时,你一定是从儿子手中接过来 对么,程序也是如此,如果一个函数返回了一个数据,那么想要用这个数据,那么就需要保存 保存函数的返回值示例如下: #定义函数 def add2num(a,...b): return a+b #调用函数,顺便保存函数的返回值 result = add2num(100,98) #因为result已经保存了add2num的返回值,所以接下来就可以使用了

10810

iOS内存管理-基本概念整理

二、内存管理/引用计数 无论是MRC还是ARC环境,Objective-C都采用引用计数来管理内存;每个对象都有一个引用计数器,任何时候指向对象的指针个数和对象的引用计数相等,当一个对象的引用计数为0的时候将会被释放...id obj = [[NSMutableArray array]; [obj release]; 四、ARC自动引用计数 ARC(Automic Reference Counting),即自动引用计数;...以这些名称开始的方法在返回对象时,必须返回给调用方所应当持有的对象。这在ARC环境下的规则一样。...只是ARC下关于init开发的方法规则要更加严格了: 1.必须是实例方法,且返回对象; 2.返回对象应该是id类型或该方法声明类的对象,抑或该类的超类或子类; 3.该返回类型不注册到autoreleasepool...上; 4.基本上,init方法只是对alloc方法返回值的对象进行初始化处理并返回对象; 7.显式转换id和void * 这里说到的其实就是Core Foundation和Foundation两者之间的转换

1.1K31

iOS - 详解内存管理

在书中一句话总结成了“ARC(Automatic Reference Counting)代表的是自动引用计数,自动引用计数是指内存管理中对引用采取自动计数的技术”。...)使用的人多了一个,加1,计数值就从0变成了1       2、之后每当上班的人多一个(对象的使用环境多一个),那我们的引用计数就+1       3、下班后上班的人少一个( 对象的使用环境少一个),那我们的引用计数就...-1       4、最后一个人也走了,引用计数再-1就变成了0,没人再去使用对象,这时候引用计数变成0,我们就废弃对象       要结合它说的这个例子去理解引用计数相信还是比较容易的,下面再说说书中总结的内存管理的思考方式...最后,在Cocoa框架中,也有许多的类方法用于返回 autorelease  对象,比如 NSMutableArray 类的 arrayWithCapacity 类方法,比如下面两个方法是一样的,只不过在...ARC环境中不需要我们自己再去写 autorelease NSMutableArray * array = [NSMutableArray arrayWithCapacity:1]; NSMutableArray

60810

isa详解(二)cache和散列表

meta-class对象的地址值 magic 分辨对象是否初始化 weakly_referenced 是否被弱引用过,如果没有,释放更快 deallocating 是否被释放 has_sidetable_rc 引用计数器是否大过无法存储在...isa中 如果为1 就存储在SideTable类的属性中 extra_rc (retain count) 存放引用计数器(存储引用计数器-1) 上面为什么说释放更快 源码中查找 objc_destructinstance...直到找到空闲位置,并赋值 取值: 同样角标通过 key &mark 当选出的key和传入的key不符合的时候 index- -操作 找到和key相同的值 并返回 扩容: 每次记录赋值个数,当赋值个数大于数组的时候...implementation SRHash_t @end #define kCapacityBase 4 @interface SRHash() @property (nonatomic, strong) NSMutableArray...*) creatHashsWithCapacity:(NSInteger) capacity { NSMutableArray * array = [NSMutableArray arrayWithCapacity

52740

Cocoa内存管理的简单规则

方法 描述 -retain 给一个对象的引用计数加1 -release 给一个对象的引用计数减1 -autorelease 在将来的某些时候将一个对象的引用计数减1 -alloc 分配一块内存给对象,引用计数器将设为...1 -copy 拷贝一个对象,将返回引用计数为1的一个对象 引用计数规则 \u000a```在你的方法中使用了-copy\u000a```, \u000a```-alloc\u000a``` 和 \u000a...便捷构造方法将返回一个autoreleased对象,所以你不必使用release。 在使用autoreleased后这样做,将减少count的计数到0,这个对象将被释放。...因此,如果你想建立一个包含一堆number的数组,你可以像下面示例中的几个方法来做 NSMutableArray *array; int i; // ......NSMutableArray *array; int i; // ...

47710
领券