Tôi đã tìm thấy các câu hỏi tương tự, nhưng -containsObject
không hoạt động như tôi mong đợi.NSMutableArray containsObject trả về true, nhưng nó không nên
Vấn đề của tôi là phương pháp NSMutableArray -containsObject
trả về true khi không nên, khi cố gắng tạo ra các màu UNIQUE ngẫu nhiên và thêm vào một mảng.
Cách tốt nhất để kiểm tra xem NSMutableArray
có chứa đối tượng có cùng giá trị hay không.
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]);
Các
NSLog()
luôn nói đếm mảng là 1.
Cậu gỡ lỗi để bước qua và nhìn vào 't' và các nội dung của 'colour_arr'? – Wain
(UIColor *) t nhận địa chỉ và giá trị rgb khác nhau. nhưng chứaObject nói "Tôi đã hiểu rồi." chỉ cần dán mã sao chép. và nhận được số lượng log 1 –
UIColor lấy nổi (CGFloats chính xác) như giá trị RGB - giữa 0 và 1. Bạn có thể đã tạo ra một loạt các đối tượng giống hệt nhau bằng cách bão hòa các giá trị RGB. – Monolo