I agree that newer software (including firmware) is being developed with far stronger hardware in mind. With downloaded software, a user can simply uninstall if it proves to be too much for their hardware. However, this is not easily possible for the firmware. Once a user upgrades the firmware (sometimes, by accident), and finds it to be too much for their hardware, they have no option to revert, and this is the issue I take with Apple.Anyone who did something so idiotic should be laughed out of the courtroom, then publicly humiliated. Hardware gets better every year, and the software grows to take advantage of it. There's no conspiracy, simply Apple wanting to take full advantage of their latest and greatest. Also applies to Microsoft, Google, Red Hat, Canonical, and pretty much every company that develops software. Your nearly 5 year old iPad 1 is slow because it only had 256MBs of RAM and the current software, both apps and OS, are being developed with 1GB+ in mind.
That code is nonsensical for several reasons.
1. The ifdef (IPHONE4 || IPHONE4S) is a preprocessor conditional. It will either always be present or not based on the condition at the time of compile. This code will not differentiate between an iphone 4 and an iphone 5/6 etc.
2. The for loop does not actually write any memory location other than i. So it is likely that a good complier would simply eliminate this entire loop altogether since i is not used, unless i is used further on within the memcpy function.
3 for(i=0; i<32767; i+2) while technically not a syntax error, it is bad coding nonetheless. The for loop will not increase i by 2 each loop. To do that you would need to change it to i += 2. So what you have is simply a loop that decrements i by one each time ( i--). Now here is where things get a little more complicated. Since i is declared as an int, it will either be a 32 bit singed integer, or possibly a 16 bit signed integer. The 32767 sort of implies that it is a 16 bit integer, but given the sloppy coding elsewhere I cant accept that out of hand. Because we dont know for sure whether i is 16 bit or 32 bit, it means the for loop could process in two radically different ways:
i is 16 bit: So i starts at zero and counts down until it is no longer less than 32767. Which means the loop ends when i goes below -32768 at which point it goes to 32767. So the for loop ends after about 32768 loops.
i is 32 bit: So i starts at zero and counts down until it is less than 32767. But because it is 32 bit it will take 2 billion loops before it is no longer less than 32767!
Gingerbread is almost 4 years old, but most of important apps still support it with their newest versions (Google, Facebook, Amazon, ...)
The iPhone 4 is usable on iOS 7 but laggy.This may have seemed like a smart policy at first. That is until you consider that a lot of countries have 3 year cell phone contracts. My 3G was the next best thing to bricked after I installed iOS 4 on it, and I still had a year left on the contract. I would have been screwed. Fortunately, you could still downgrade. That was before Apple started signing the IPAs.
The iPhone 4 is pretty rough on iOS 7 from my experience with the work phones. Usable, but they definitely chugs. The 4S though is still good for at least iOS 8, since so many current devices (non-retina iPad Mini, Apple TV) still use the A5 SoC.
As I like to tell people: the truth is often a lot more boring than you want it to be.
I don't think Apple wants to make everyone's phones unusable three years later. It reduces the chances that you'll get repeat customers. The simplest and most likely answer is this: Apple is trying to make the most of its newer hardware, and it sometimes stresses the old hardware in the process. Yep, it sucks if you don't want to buy a replacement every two years, but that doesn't mean it's an evil conspiracy. I'm just hoping that this is less of an issue in the long run as processors improve and memory is more bountiful.
As I like to tell people: the truth is often a lot more boring than you want it to be.
I don't think Apple wants to make everyone's phones unusable three years later. It reduces the chances that you'll get repeat customers. The simplest and most likely answer is this: Apple is trying to make the most of its newer hardware, and it sometimes stresses the old hardware in the process. Yep, it sucks if you don't want to buy a replacement every two years, but that doesn't mean it's an evil conspiracy. I'm just hoping that this is less of an issue in the long run as processors improve and memory is more bountiful.
I've never understood why some people concoct completely crazy conspiracy theories.