3 ms·
Header files are a blessing. They move many bugs from runtime to compile time. The point of the header file is to make a contract. Sometimes that isn't appropri
by jws 18y ago
Header files are a blessing. They move many bugs from runtime to compile time. The point of the header file is to make a contract. Sometimes that isn't appropriate and there you can "go dynamic" if you need to, but you are moving your errors to the runtime.
The retain/release model of object lifetime management in Objective C becomes nearly automatic for the programmer. That being a dangerous "nearly", you can still screw up.
Garbage collection is much nicer, but given the limited memory I can understand why they didn't enable it on the phone.
Remember: You can screw up badly with garbage collected systems too, it just doesn't result in a core dump on a desktop machine. You can accidentally leave references to objects you will never access again (cache structures are notorious) preventing it from being reclaimed. On a desktop that leads to a bit of memory bloat and maybe some swapping if the app runs long enough. On an iPhone you run out your RAM and get terminated.
- Tichy 18y agoThing is, I programmed (garbage collected) Java on mobile phones for years, and those devices had far less memory than the iPhone. So the "it makes sense for a mobile phone" argument simply doesn't fly with me. Header files: Java doesn't have header files, and I am sure it provides the same level of compile time error catching (or doesn't it?). I just deeply resent having to write the same code twice, and I suspect the explosion of files required doesn't make things easier, either. There is also a personal preference: having coded Java for years, I would simply prefer a dynamic language now, instead of Objective-C (which also has the Java-style interfaces, I have heard - why do they need BOTH interfaces and header files? One would be sufficient for the compile time checks, I would think). .