I’m still trying to wrap my head around how things should be done in the object-oriented world and I think my problem is that I don’t understand how to best utilize encapsulation. Specifically, I have lots of small bits of code that I use in several classes in my project. For example:
+ (NSString *)getFormattedDate;
+ (NSString *)getResultsFilePath;
+ (NSError *)removeFileFromCache:(NSString *)fileName;
These are all 3-5 line methods that I use in more than one class. My standard practice has been to put these snippets into a Utility.inc file and call them when I need them. Is that appropriate in the object-oriented world or should each class be self-contained? And if it’s appropriate, would you put the code into a singleton or just a regular class file and [[Utilities alloc] init] in each class where you want to use the methods?
Thanks for the answers. I’m not sure that this the right way to do things, but this is what I’ve done on the projects I just submitted.
I made two classes, one for Utility methods and one for globals. The methods in the Utilities class are all class methods since they operate on files and constants or globals. Then I made a singleton for global variables. I have all of my global constants in the .pch file. Also in the .pch file I put the following two lines of code so that the utilities and globals are available everywhere.
Accessing the methods is straightforward. Here’s an example of a call to both methods to generate an HTML header for an email.
In case anyone can use it, here is my current version of the code. (Sorry for the formatting-I can’t seem to get the wiki to cooperate.)
Globals in a singleton. Probably not thread-safe, but I don’t care right now.
@implementation Globals {
}