I'm not in iOS development, but I think you can check the binary or some data file with MD5 algorithm for detect if was modified. Then *the most important* don't say "you are a bad guy" (you give clues here), continue and disable little things in the app or game, or generate a div by 0 later in the code, or fail with a message ("cracked version, sorry") when you are in the last level or you want to save the records. This way you can't avoid a cracked version, but the differences are not obvious to the cracker. The crackers sometimes not complete the full game. But the cracker "clients", got frustrated when they discover that this cracked thing not works. If someone likes the game/app very much, he will go to buy legally.