NSMutableArray is not guaranteed to be thread-safe — not even just adding objects, because making that thread-safe would require addObject:
to be an atomic operation, which is not part of the class's contract.
In general, if the documentation says "This is thread-safe," it is thread-safe (at least in isolation), but if the docs don't say that, you should assume it is unsafe and you need to use synchronization.