Please do not post the same thing multiple times. The board software automatically flags certain posts as needing moderator attention. This happens the most often for new users. I'm pretty sure this is made clear at the time you attempt to post. Posting the same thing over and over again just makes that many more posts the moderators have to weed through later. This makes us sad. Don't make us sad. If your post/thread doesn't appear, just wait a while. Don't post it again. If it hasn't shown up by the next day, then you can try again. I normally go through posts in the mornings, and try to check a few times throughout the day, but I'm not here 24/7. There will typically be a significant delay before posts are approved. Just be patient.
If it's a utility class like NSNotifcationCenter, it probably won't take that much memory. If it's a data container, you'd most likely have all your data in memory all the time anyways.
I can't comment to much on alloc/dealloc. You should try to avoid doing unnecessary alloc/deallocs like creating new UITableViewCells for every row.
You cannot change the animation of a navigation controller at least not using public API's. presentModalViewController probably doesn't work in viewDidLoad because the view has not been shown yet.
Singletons have their place. For example, NSNotificationCenter is a singleton. It doesn't make sense to have more than 1 instance of it. MPMediaLibrary is also a singleton. Singletons are bad when you start adding data or methods that shouldn't be shared globally. Like if you just need to share some data between a view controller and another view controller that is presented from the original view controller, don't use a singleton.
For classes with a mutable variant (or are mutable themselves), I use a copy because otherwise someone can change the value of the ivar without notifying anyone like so:
NSMutableString *mutableString= [NSMutableString stringWithString:@"Initial Value"]; self.secondLabelText = mutableString; //class thinks the value is "Inital Value"
[mutableString setString:@"Modified Value"]; //class has no idea the value of the string has changed
If you use copy, this can't happen since it'll copy the contents into an immutable instance.