I would advise taking the Core Animation path for this. You can use the NSView subclass to receive and handle touch events, after which you can then use the touch location to calculate the cell that was deleted and update your model accordingly.
You organize CALayers in a hierarchy, so the complexity of the view tree will depend on the other user interface elements you want to have — you will have a CALayer containing 900 sublayers.
Using Core Animation will also let you enjoy the animation.
It will be a bit more complicated, but you just need to bite the bullet and get stuck in the Core Animation documentation and / or buy a book.
Good luck.
Edit: Ivan suggests using the hitTest message. This way you can get the layers to tell you which one was hit. Using this is obviously pretty good. However, if you are looking for speed, it might be quicker to avoid this and just fix the problem. This makes assumptions about how your game works (i.e. the buttons / cells do not move the location). If you get a chance to try both and let us know how it works .: O)
source share