I believe a popular way to declare "private methods" in Objective-C is to create its class extension and declare methods that you would like to make as private.
I would like to know more in detail on how an class extension makes the methods work as private.
That's not an "empty category", it's a class extension. Read Bbum's explanation of them at the link I provided.