title: Do constants always keep the same value?
body: <p>I've been reading that when conforming to the NSCoding protocol and implementing the methods like -encodeWithCoder:, and encoding objects with i.e. </p>
  
  <pre><code>[coder encodeObject:self.someObject forKey:kSomeConstantToIdentifyFields];
  </code></pre>
  
  <p>this constant is used to keep track of that object. So later, with help of that constant, the appropriate "field" or whatever can be mapped to that object again (in this case an property).</p>
  
  <p>But: Isn't this funny constant actually a random value when defined like this?</p>
  
  <pre><code>#define kSomeConstantToIdentifyFields @"fieldFooBar"
  </code></pre>
  
  <p>How does the system manage it to always assign the same value to that constant? Or did I get some stuff about this constants wrong? Is the value actually "fieldFooBar" and not some random number?</p>