As a general rule, whenever you're referring to other objects or components via script on a frame-to-frame basis, its best to cache a reference to that object/component in a variable. It is both faster, and does not require repeated memory allocation. If you need to find another object by name with GameObject.Find(), try to do it only once (such as in an Awake () function) and store it in a variable for repeated use.
If you're ever in doubt as to whether you're scripts are causing memory allocations every frame, build your app in xcode and choose Run > Start with Performance Tool > Activity Monitor from the pull down menus. If your app's memory usage is slowly climbing for no apparent reason, you know you have allocations occurring every frame. After about 4 mb accumulate, the garbage collector will run and you will experience a small performance hit... which is really annoying if you're making an action game! (FYI, a lot of people observe this behavior and think its memory leaks, but this is not the case - just garbage accumulating and being discarded.)
My first iphone game ended up allocating a fair amount of tiny junk all the time and as such wil experience these performance hits for a couple seconds once every 2-3 minutes during play. I hope to write cleaner code and avoid it altogether in my current project - ideally garbage collection will almost never need to run in the midst of gameplay.