It's amazing any iphone app works at all.. What a mess. It's pretty clear nobody had embedded system programming experience when they started all this.
Rodfather,
imabonehead,
Micah,
Stephen Mack,
CW,
Osiride,
miki,
PI,
eslr,
Amir,
Lynk Ly,
Andrew C (see frenf.it),
and
Aloof Schipperke
liked this
Extension by inserting code into a template is just really bad design: - (BOOL) application:( UIApplication *) application didFinishLaunchingWithOptions:( NSDictionary *) launchOptions { self.window = [[ UIWindow alloc] initWithFrame:[[ UIScreen mainScreen] bounds]]; // Override point for customization after application launch
- Todd Hoff
Weak / Strong pointers is a crazy responsibility for programmers to handle. It's impossible when using tasks.
- Todd Hoff
Chaining initializers is more bad design through excessive coupling: self = [super init];
- Todd Hoff
The lifecycles of when objects are created and when methods are created is implicit. I can't tell by looking when things happen. In other words, the dynamic behaviour of the code is not clear at all.
- Todd Hoff
MVC. Love it hate it, put everything in the controller.
- Todd Hoff
Generally I'm against making the programmer run a compiler in their head to understand what is actually getting called. So though property seems like a good idea it makes very hard to deduce when reading code what will be called when an assignment happens.
- Todd Hoff
Cell reuse by a reuse identifier is kludgy and error prone. Why does it need to own the memory?
- Todd Hoff
String based selectors are used all over the place. These are not typed so are large source of run time errors when they shouldn't be.
- Todd Hoff
The compiler doesn't check for methods in the interface that aren't implemented? It's a runtime error? Wow.
- Todd Hoff
Seems odd to create a view controller and then give controller of the memory to the navigation controller. Seem like unnecessary memory allocs/deallocs.
- Todd Hoff
In example code I see the use of static variables inside functions. That's bad style. It's more invisible magic code.
- Todd Hoff
You can't test anything like the full functionality in the simulator. Beacon stuff? No. Camera? No. The interfaces should be accessible so someone could at least try to write an advanced simulator.
- Todd Hoff
Nice debugging and monitoring tools. Very nice.
- Todd Hoff
I'm not sure how it could be done better, but the auto layout constraints are bewildering. Oh my.
- Todd Hoff
Using reference counting to manage memory when transition application states to background and active and to handle low memory conditions is highly error prone.
- Todd Hoff
Not a fan of adding private class members in an @interface section of the .m file. I reserved judgement of this at first, it sounds good, but in practice I prefer everything to be in one place so I can see how everything relates together at a glance.
- Todd Hoff
I wonder if they were able to start over on the watch? I haven't seen the watchkit so I'm not sure how it works.
- Todd Hoff
Having to explicitly trigger a table update in the UI's main thread is another example of thread weirdness: dispatch_async(dispatch_get_main_queue(), ^{ [self.tableView reloadData]; });.
- Todd Hoff
I'm not sure why you would ever create convenience initializers when you can just create convenience constructors and hide all the initializers?
- Todd Hoff
Frameworks. For or against?
- Todd Hoff
It takes a dozen lines of code to display an alert. That's crazy. Form validation in general is primitive at best.
- Todd Hoff
" NSString *mediaType = [info objectForKey:UIImagePickerControllerMediaType];if ([mediaType isEqualToString:(NSString*)kUTTypeImage]) {" - a couple things here. Having to cast between different encapsulated string types from different frameworks is both confusing and wasteful. Also, dictionaries are great, but the problem is you never know what's in them. Looked at the doc, how was I to know what's in info? It's a constant in some random header file. Enums are at least discoverable.
- Todd Hoff
@selector isn't resolved at compile or link time. It's a runtime error. No bueno.
- Todd Hoff
Can't test MPMoviePlayerController from the simulator.
- Todd Hoff
The complexity around moving the keyboard to not hide form fields is astonishing. Shouldn't that be a feature?
- Todd Hoff
Yay, finally got github to integrate with Xcode. Not an obvious setup at all. You have to tell a project to use git, the git repository shouldn't have a readme file or anything in it, you have to use source code control to add a remote repository, then commit while selecting the remote repository. I want down so many blind alleys it's embarrassing. Using git from Xcode is pretty nice. I'm surprised they don't have a revert back to a previous commit command. That's often quite useful.
- Todd Hoff
I have absolutely no idea how to use PhotoKit to do anything. There's almost nothing in the way of example code.
- Todd Hoff
Core Data is one complex bugger. As is photokit, and buggy. Yet displaying navigable driving directions was easy as pie.
- Todd Hoff
This swift / objectivec split is a PITA. A lot of examples are now in swift which is not so easy to translate into objectivec. When you see .Design what the hell does that map to?
- Todd Hoff
I wish they had went with an actor/event model instead of a completion handler model. Completion handlers look inline yet at runtime they run in another thread. Spent a long time debugging example code from Apple that messed this up.
- Todd Hoff
Air Drop and Share extensions really should be similar things rather than completely different. Then there's multi peer connectivity. It feels like different groups developed each technology.
- Todd Hoff
I now really appreciate the simplicity and power of the socket.
- Todd Hoff
The fact that the keyboard doesn't automatically move fields for text input is stunningly bad.
- Todd Hoff
Here's a thought, if it's so damn important tat UI methods be executed on main, maybe they should schedule themselves on main?
- Todd Hoff
WatchKit added a way for an extension to query an app, but the same mechanism isn't available in any other extension. Likewise there's share, air drop, etc that all kind of do the same thing through different means.
- Todd Hoff