Я не уверен, что на 100% уверен в том, что вы пытаетесь сделать здесь, но мне кажется, что вы могли бы просто заменить это:
if ([[self objectArray] indexOfObject:rootObj] % 2)
[aCell setBackgroundColor: [NSColor yellowColor]];
else
[aCell setBackgroundColor: [NSColor blueColor]];
с
if ([aView rowForItem:rootObj] % 2)
[aCell setBackgroundColor: [NSColor yellowColor]];
else
[aCell setBackgroundColor: [NSColor blueColor]];
Ваш rootObj является элементом в общих чертах так же, как anItem, и он должен сказать вам, в какой строке находится этот корневой элемент. Конечно, возможно, я не понимаю, что вы пытаетесь найти там.