gpt4 book ai didi

objective-c - NSMutableArray containsObject 返回 true,但它不应该

转载 作者:太空狗 更新时间:2023-10-30 03:52:36 24 4
gpt4 key购买 nike

我发现了类似的问题,但是 -containsObject 没有像我预期的那样工作。

我的问题是 NSMutableArray -containsObject 方法不应该返回 true,当尝试生成随机的 UNIQUE 颜色并添加到数组时。

检查 NSMutableArray 是否包含具有相同值的对象的最佳方法是什么。

NSMutableArray *color_arr=[NSMutableArray array];
UIColor *t;
for(int i=0; i<100; i+=1)
{
int r = arc4random()%256;
int g = arc4random()%256;
int b = arc4random()%256;

t=[UIColor colorWithRed:r green:g blue:b alpha:255];

if (![color_arr containsObject:t])
[color_arr addObject:t];

//[t release];//is t need to be released here on non-arc project? well Im not sure.
}
NSLog(@"total:%d",[color_arr count]);


NSLog() 始终表示数组计数为 1。

最佳答案

新编辑:

for() 循环的结构也是错误的。您要在循环开始之前声明 UIColor。您应该在循环开始后声明颜色:

for (i=0;i<100;i++) {
int rInt = arc4random()%256;
float rFloat = (float)rInt/255.0f;
//same with gInt, bInt
//make gFloat and bFloat this way
UIColor *t = [UIColor colorWithRed:rFloat green:gFloat blue:bFloat alpha:1];
if (![color_arr containsObject:t]) {
[color_arr addObject:t];
}
NSLog(@"%i",color_arr.count);
}

UIColor 不使用 integer 值,它使用 float 值。尝试将您的 integer 除以 255,然后将它们设置为 r、g、b。

喜欢:

int rInt = arc4random()%256;
float rFloat = (float)rInt/255.0f;
//same with gInt, bInt
//make gFloat and bFloat this way
t = [UIColor colorWithRed:rFloat green:gFloat blue:bFloat alpha:1];

关于objective-c - NSMutableArray containsObject 返回 true,但它不应该,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18338352/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com