Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/objective-c/24.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Objective c NSMutableArray containsObject方法未检测到对象_Objective C_Iphone_Nsmutablearray - Fatal编程技术网

Objective c NSMutableArray containsObject方法未检测到对象

Objective c NSMutableArray containsObject方法未检测到对象,objective-c,iphone,nsmutablearray,Objective C,Iphone,Nsmutablearray,为什么它没有检测到UIButton在数组中 编辑 事实证明,它在添加后甚至不会立即检测到它: // Add the button to the NSMutableArray. ... UIButton *btn = [UIButton buttonWithType:UIButtonTypeCustom]; [[self hBtns] addObject:btn]; ... // In another method, try to see if it exists. - (void)didPu

为什么它没有检测到UIButton在数组中


编辑

事实证明,它在添加后甚至不会立即检测到它:

// Add the button to the NSMutableArray.
...
UIButton *btn = [UIButton buttonWithType:UIButtonTypeCustom];
[[self hBtns] addObject:btn];
...

// In another method, try to see if it exists.
- (void)didPushBtn:(id)sender
{
  UIButton *btn = (UIButton *)sender;
  if ([[self hBtns] containsObject:btn]) // Is false every time.
  ...
}

听起来像是
isEqual:
比较失败了。你能看一下UIButton在两个位置(添加的位置,然后在
didPushBtn
中)的
hash
,看看它们是否是相同的值吗?

听起来像是
isEqual:
比较失败了。你能看一下UIButton在两个位置(添加的位置,然后在
didPushBtn
中)的
hash
,看看它们是否是相同的值吗?

我忘了初始化数组(*doh*):


我忘记初始化数组(*doh*):


谢谢你的帮助,梅雷迪斯。散列是相同的。关于为什么isEqual:比较会失败还有其他想法吗?嘿,Meredith,看我对这个问题的编辑。也许这会有帮助。没关系,想清楚了(见下文)。谢谢你的帮助,我很感激!谢谢你的帮助,梅雷迪斯。散列是相同的。关于为什么isEqual:比较会失败还有其他想法吗?嘿,Meredith,看我对这个问题的编辑。也许这会有帮助。没关系,想清楚了(见下文)。谢谢你的帮助,我很感激!这实际上是我的下一个建议。很高兴您对它进行了排序。您还应该确保setHBtns:不会保留数组,否则会出现内存泄漏。或者,它应该保留数组,他可以使用
[NSMutableArray array with capacity:0]
(或者干脆
[NSMutableArray array]
)。在我看来,更大的问题是属性是否应该是
只读的
,数组是否应该在包含类的初始值设定项中创建一次。[slapshhead]。很高兴你分享了这个问题和答案-同样的问题让我发疯。这实际上是我的下一个建议。很高兴您对它进行了排序。您还应该确保setHBtns:不会保留数组,否则会出现内存泄漏。或者,它应该保留数组,他可以使用
[NSMutableArray array with capacity:0]
(或者干脆
[NSMutableArray array]
)。在我看来,更大的问题是属性是否应该是
只读的
,数组是否应该在包含类的初始值设定项中创建一次。[slapshhead]。很高兴你分享了这个问题和答案——同样的问题让我发疯。
UIButton *btn = [UIButton buttonWithType:UIButtonTypeCustom];
[[self hBtns] addObject:btn];
if ([[self hBtns] containsObject:btn]) // Returns false.
[self setHBtns:[[NSMutableArray alloc] initWithCapacity:0]];