Code that uses NSHomeDirectory()
is probably doing The Wrong Thing. It’s not appropriate to clutter up the user’s home directory — internal application-data should be stored in the Application Support
directory (or a temporary file if it’s transient). So I can’t think of a good reason to get the path to the user’s home directory. Every use of NSHomeDirectory()
I’ve seen is spamming the home directory, or getting a subdirectory in a brittle way.
For sample code that gets a directory robustly, using NSSearchPathForDirectoriesInDomains()
, see Finding or creating the application support directory.
Because NSHomeDirectory()
encourages so many bad practices, it should be deprecated.
Disabling NSHomeDirectory()
in Your Projects
Add the following macro to your prefix file:
#define NSHomeDirectory() NSHomeDirectory_IS_DISCOURAGED_USE_NSSearchPathForDirectoriesInDomains_TO_GET_A_SUBDIRECTORY_OF_HOME
Then any use of NSHomeDirectory()
will give the compiler error:
error:
‘NSHomeDirectory_IS_DISCOURAGED_USE_NSSearchPathForDirectoriesInDomains_TO_GET_A_SUBDIRECTORY_OF_HOME’ undeclared (first use in this function)
Tell Me I’m Wrong
If you’ve seen a legitimate use of NSHomeDirectory()
please leave a comment! Just because I can’t think of one doesn’t mean they don’t exist.