Trong thử nghiệm đơn vị của tôi, tôi đã xem xét một số điều kiện biên và các thử nghiệm của tôi vẫn không thành công. Tôi theo dõi nó trở lại để liệt kê thông qua một bộ chỉ số khi các chỉ mục của nó mở rộng tất cả các cách để NSNotFound-1 (giá trị pháp lý tối đa cho mỗi tài liệu).Đây có phải là lỗi trong NSIndexSet enumerateIndexesUsingBlock không?
Sử dụng mã kiểm tra này:
// Create an index set with NSNotFound-5, NSNotFound-4, NSNotFound-3,
// NSNotFound-2 and NSNotFound-1
NSIndexSet *testSet = [NSIndexSet indexSetWithIndexesInRange:
NSMakeRange(NSNotFound - 5, 5)];
NSLog(@"Index set with %lu entries: %@", (unsigned long) testSet.count, testSet);
NSLog(@"NSNotFound is %lu and NSNotFound-1 is %lu", NSNotFound, NSNotFound - 1);
__block int count = 0;
[testSet enumerateIndexesUsingBlock:^(NSUInteger idx, BOOL *stop) {
NSLog(@"- %lu", (unsigned long) idx);
++count;
}];
NSLog(@"The count is %d", count);
Trong dữ liệu ghi nhận tôi nhận được:
Index set with 5 entries: <NSIndexSet: 0x10057f890>[number of indexes: 5 (in 1 ranges), indexes: (9223372036854775802-9223372036854775806)]
NSNotFound is 9223372036854775807 and NSNotFound-1 is 9223372036854775806
- 9223372036854775802
- 9223372036854775803
- 9223372036854775804
- 9223372036854775805
The count is 4
Tôi cố gắng này trên máy Mac của tôi và trên giả lập iOS và nhận được kết quả tương tự (trừ các giá trị thực tế của NSNotFound, tùy thuộc vào 32 bit hoặc 64 bit).
Điều này khiến tôi nghĩ rằng có lẽ tôi đã đọc tài liệu sai. Tôi có làm điều gì sai hay đây là lỗi của Apple không?
Đó là một câu hỏi thú vị. +1 – trojanfoe
Điều đó thực sự trông giống như một lỗi trong 'enumerateIndexesWithOptions'. –
Tính năng này có hoạt động nếu bạn bắt đầu phạm vi tại 'NSNotFound - 6' (và giữ độ dài 5) không? –