Onde está a diferença entre setObject: forKey: e setValue: forKey: in NSMutableDictionary?

Ao olhar para a documentação, quase não vejo grande diferença.Ambos "valor" e "objeto" são do tipo id, então pode ser qualquer objeto. Key é uma vez uma string e, no outro, um id. Um deles parece reter o objeto e o outro não. O quê mais? Qual deles é para qual caso?