title: How to identify a "hw.machine" identifier reliable?
body: <p>I'm looking for the most official source to complete/maintain this method:</p>
  
  <pre><code>-(NSString*)platformString
  {
      NSString *platform = [self platform];
  
      if ([platform isEqualToString:@"iPhone1,1"])    return @"iPhone 1G";
      if ([platform isEqualToString:@"iPhone1,2"])    return @"iPhone 3G";
      if ([platform isEqualToString:@"iPhone2,1"])    return @"iPhone 3GS";
  
      if ([platform isEqualToString:@"iPhone3,1"])    return @"iPhone 4";
      if ([platform isEqualToString:@"iPhone3,2"])    return @"iPhone 4 (Other Carrier)";
      if ([platform isEqualToString:@"iPhone3,3"])    return @"iPhone 4 CDMA";
      if ([platform isEqualToString:@"iPhone4,1"])    return @"iPhone 4S";
  
      if ([platform isEqualToString:@"iPhone5,1"])    return @"iPhone 5";
  
      if ([platform isEqualToString:@"iPod1,1"])      return @"iPod Touch 1G";
      if ([platform isEqualToString:@"iPod2,1"])      return @"iPod Touch 2G";
      if ([platform isEqualToString:@"iPod3,1"])      return @"iPod Touch 3G";
      if ([platform isEqualToString:@"iPod4,1"])      return @"iPod Touch 4G";
      if ([platform isEqualToString:@"iPod5,1"])      return @"iPod Touch 5G";
  
      if ([platform isEqualToString:@"iPad1,1"])      return @"iPad";
  
      if ([platform isEqualToString:@"iPad2,1"])      return @"iPad 2 WiFi";
      if ([platform isEqualToString:@"iPad2,2"])      return @"iPad 2 GSM";
      if ([platform isEqualToString:@"iPad2,3"])      return @"iPad 2 CDMA";
      if ([platform isEqualToString:@"iPad2,4"])      return @"iPad 2 CDMAS";
      if ([platform isEqualToString:@"iPad2,5"])      return @"iPad Mini Wifi";
      if ([platform isEqualToString:@"iPad2,6"])      return @"iPad mini (Cellular ATT)";
      if ([platform isEqualToString:@"iPad2,7"])      return @"iPad mini (Cellular Verizon)";
  
      if ([platform isEqualToString:@"iPad3,1"])      return @"iPad 3 WiFi";
      if ([platform isEqualToString:@"iPad3,2"])      return @"iPad 3 CDMA";
      if ([platform isEqualToString:@"iPad3,3"])      return @"iPad 3 GSM";
      if ([platform isEqualToString:@"iPad3,4"])      return @"iPad 4 Wifi";
      if ([platform isEqualToString:@"iPad3,5"])      return @"iPad 3 (Cellular ATT)";
      if ([platform isEqualToString:@"iPad3,6"])      return @"iPad 3 (Cellular Verizon)";
  
      if ([platform isEqualToString:@"iPad4,1"])      return @"iPad 4 WiFi";
      if ([platform isEqualToString:@"iPad4,2"])      return @"iPad 4 GSM";
      if ([platform isEqualToString:@"iPad4,3"])      return @"iPad 4 CDMA";
  
      if ([platform isEqualToString:@"i386"])         return @"Simulator";
      if ([platform isEqualToString:@"x86_64"])       return @"Simulator";
  
      return [NSString stringWithFormat:@"Unknown: %@", platform];
  }
  </code></pre>
  
  <p><strong>Does Apple have some statement about this somewhere?</strong></p>
  
  <p>Or an explorous person with a decent research somewhere?</p>
  
  <hr>
  
  <p>Fo clarification, I'm using this code under the hood:</p>
  
  <pre><code>-(NSString*)getSysInfoByName:(char*) typeSpecifier
  {
      size_t size;
      sysctlbyname(typeSpecifier, NULL, &amp;size, NULL, 0);
  
      char *answer = malloc(size);
      sysctlbyname(typeSpecifier, answer, &amp;size, NULL, 0);
  
      NSString *results = [NSString stringWithCString:answer encoding: NSUTF8StringEncoding];
  
      free(answer);
      return results;
  }
  
  -(NSString*)platform
  { return [self getSysInfoByName:"hw.machine"]; }
  </code></pre>