…e similar to UITableView.
1) selection change can be refused in method by returning value NSNotFound.
2) deselection of previous selected item is made after calling willSelectItemAtIndex method, so it is possible to use gridView.indexOfSelectedItem
3) Grid view which isn't full and there is some free space under cells. If user tap to that space, both methods willSelect+didSelect are called and index value is NSNotFound. Fixed, methods aren't no more called.