from UIImage reference:
@property(nonatomic, readonly) CGSize size
The dimensions of the image, taking orientation into account.
Discussion
In iOS 4.0 and later, this value reflects the logical size of the image and is measured in points. In iOS 3.x and earlier, this value
always reflects the dimensions of the image measured in pixels.
What’s the difference between pixels and points in iOS?
A pixel on iOS is the full resolution of the device, which means if I have an image that is 100×100 pixels in length, then the phone will render it 100×100 pixels on a standard non-retina device. However, because newer iPhones have a quadrupled pixel density, that same image will render at 100×100 pixels, but look half that size. The iOS engineers solved this a long time ago (way back in OS X with Quartz) when they introduced Core Graphics’ point system. A point is a standard length equivalent to 1×1 pixels on a non-retina device, and 2×2 pixels on a retina device. That way, your 100×100 image will render twice the size on a retina device and basically normalize what the user sees.
It also provides a standard system of measurement on iOS devices because no matter how the pixel density changes, there have always been 320×480 points on an iPhone screen and 768×1024 points on an iPad screen.*
But at the same time, you can basically disregard the documentation considering that retina devices were introduced with iOS 4 at a minimum, and I don’t know of too many people still running iOS 3 on a newer iPhone. But if such a case arises, your UIImage would need to be rendered at exactly twice its dimensions in pixels on a retina iPhone to make up for the pixel density difference.
*Starting with the iPhone 5, the iPhone’s dimensions are now no longer standardized. Please use the appropriate APIs to retrieve the screen’s dimensions or use layout constraints.