Answer: how many problems will there be if the array is changed after it is returned?
If you create a mutable array inside your method and then return it, never use it again, I think it is ok to return a mutable version. The fact that your method declares an NSArray return type means that you cannot guarantee that the array will change. You must not guarantee that it is immutable.
On the other hand, if you return an array that your class uses internally, it is much safer to return an immutable copy. In the above example, this does not seem to be the case.
, , copy retain; , . , . , .
, . ( (NSArray *) .)