Just an FYI:
If you generate a moderately complex Info.plist with dd-plist and save it off in binary format, and insert it into an app generated with Xcode 7.x, you may find that an iOS 7 device will refuse to allow you to install your app on it. The error if you attempt to do it via Xcode is: "Apps must have a CFBundleVersion declared as a string in their Info.plist, but com.foo.bar does not. Failing installation."
Interestingly using Xcode 6.4 to compile the app (with the same plist generated by dd-plist) will install happily on the iOS 7 device, and both the Xcode 6.4 and the Xcode 7.x versions will install happily on iOS 8 and iOS 9 devices. It is specific to the combination of Xcode 7.x, dd-plist and iOS 7 devices that cause the issue.
FWIW you can "fix" the plist by using plutil on a mac (plutil -convert binary1 foo.plist -o foo.plist). You'll note that the plist is probably a bit bigger, but the iOS 7 device will now take it happily.
I've played with it for a bit, and it appears to be something specific to the way that Apple is hashing values into their dictionaries. I'm modified dd-plist in a variety of ways to make it closer to what plutil (or Apple's serialization routines) would do with the same data, but I haven't yet gotten the iOS 7 device to accept it. I've tried a variety of iOS 7 devices.
This problem is pretty specific to my exact use case, but I thought other folks may be interested.
Cheers,
Dave