Yup, as you suspected, it has to do with deep vs shallow copies. Which are often a thorn in the side of developers.
The classic case is the nested mutable dictionary:
```
NSMutableDictionary *a = [NSMutableDictionary dictionary];
a[@“oops”] = [NSMutableDictionary dictionary];
NSMutableDictionary *b = [a mutableCopy];
```
Both `a` & `b` are pointing to the same mutable dict for key ‘oops’.
And custom objects have similar problems. So it was just safer to avoid the potential gotchas by default.
But if you’re confident in your object-copying abilities, you can get a little speed boost by using YapDatabasePolicyCopy.
-Robbie Hanson