Question: If I am messing around with XCode and trying to learn Objective-C, does it pose any threat to my system if I routinely forget to release objects? What is the real consequence of not releasing objects? If I restart my computer will these memory leaks persist?

I am mostly messing with NSStrings and NSTimers and things like that, nothing serious. I'm just concerned about it messing up my computer.

Is there any way to check if there are unreleased objects? What is one to do if they want to check a bunch of code to see if there are any of these memory leaks?

Answer: 
First of all: all processes run in their own virtual memory, so when you kill the process it's memory is being returned to the system no matter how many leaks are there.

Second. By not releasing the object there is no way to tell the system that an object should be freed and that's why all allocated objects will remain in memory even if they are already unnecessary.

Try to start from something like C and not Objective C, cause it's obvious to me that you have no idea what the pointers, RAM and so on really is.
You won't just take up memory available for your app, you will also take up memory for all other apps on the system. If you take up all the available memory Mac OS X will start moving other applications into virtual memory as well, making the ***entire computer*** slow, not just your app.

On an iOS device, if you use excessive amounts of memory the operating system will kill your app, with no error message to the user, and no chance for you to save any files.

If it's really bad, the app store review team will reject your app from even being submitted to the store. This applies to both the iOS app store and the Mac app store.

You can use the [Instruments app to check for leaks](http://www.cimgf.com/2008/04/02/cocoa-tutorial-fixing-memory-leaks-with-instruments/).

The general rule of thumb, is any time you use a method who's name starts with `alloc`, `new`, `retain`, or `copy` you are responsible for calling `release` or `autorelease` when the object is no-longer needed. And your object's `dealloc` method needs to clear all of it's instance variables.

The newest versions of Mac OS X and iOS support [Automatic Reference Counting](http://developer.apple.com/library/mac/#releasenotes/ObjectiveC/RN-TransitioningToARC/_index.html#//apple_ref/doc/uid/TP40011226). I've never used it, but it should make life much easier for new programmers.