The problem with adding a category to a class like this is that all instances of the class inherit additional methods. This is both unnecessary (because not every array must be shuffled, etc.) and dangerous (because you cannot use the typechecking check to make sure that the NSArray you are currently referencing is really the one that was expected to be will be shuffled).
An alternative would be to create your own Deck class, which has NSMutableArray as an instance variable. There you can define the actions on your deck exactly as you would like, and the fact that you are using NSMutableArray becomes implementation details. This allows you to use type checking at compile time and allows you to change the internal implementation of your Deck class without changing its clients. For example, if for some reason you decide that NSMutableDictionary will be the best backup storage, you can make all these changes to the implementation of your Deck class without modifying any code that Deck creates and uses.
source share