NSHipster, started by Mattt, is a journal of lesser-known details of Objective-C, Swift and Cocoa development on Apple platforms.
HN commenters list it among favorite iOS development resources, call it the original of its kind, and praise its documentation and code samples.
I think the best argument against swift is the plethora of knowledge, tutorials, stackoverflow answers there is for objective-c. When I started learning Unity in 2009, I wanted to use C#. Yet 90 % of all the tutorials, docs, etc.. was in javascript at the time. As I was fairly new to programming then, translating from javascript to C# slowed me down. In hindsight, if I just used javascript I would've progressed much quicker than I did. I think the situation within a year will be different, the iOS community is producing swift tutorials en masse. But I would advice you to start with objective-c.
The best iOS material is:
- Objective-C programming book from big nerd ranch or Programming in Objective-C from Stephen G. Kochan (more in-depth)
- cs193p from Stanford (iTunesU) iOS 7 course is objective-c. iOS 8 course (starting in 2015) will be swift.
After cs193p you should know enough to make apps.
If you want to be a great iOS developer, you should also learn:
- ios / cocoa design patterns
- cocoapods | git
- visit http://nshipster.com
- visit http://objc.io
- Learn from other apps source code: http://maniacdev.com/2010/06/35-open-source-iphone-app-store-apps-updated-with-10-new-apps/
Handy links:
Obj-C online reference: http://rypress.com/tutorials/objective-c/
Obj-C cheat sheet: http://cdn1.raywenderlich.com/downloads/RW-Objective-C-Cheatsheet-v-1-5.pdf
iOS tutorials: http://nscookbook.com/recipes/ | http://www.appcoda.com | http://www.raywenderlich.com ! |…
To add some anecdata, I know three people (myself included) who moved from "playing with Delphi 5 as a student" into iOS dev. And I still feel that ObjC in Xcode is (sadly) the best replacement for Delphi right now:
- A stable and pragmatic language that interfaces well with the C world.
- Nice separation of class interface/implementation; ARC is as easy as COM was in Delphi; solid reflection/metaprogramming capabilities (e.g. enumerating properties).
- Compilation is fast enough on my 5y/o laptop.
- A standard library that is so good that people never re-invent it.
- The debugger works really well and is always-on (IntelliJ still has separate "Run" and "Debug" buttons, facepalm).
- IBDesignable/IBInspectable makes writing your own components as nice as it was in Delphi: http://nshipster.com/ibinspectable-ibdesignable/
The points above will probably fall apart with Swift, but right now it's not actually too bad.
Yes, just like how no one would use C# if it weren't for Microsoft or Go if it wasn't for Google.
There are a lot of people who like Objective C including myself. If people didn't the majority of iOS apps would be developed in straight C, C++, Ruby, C#, Delphi, or Actionscript.
http://www.embarcadero.com/products/cbuilder/ios-development
http://www.rubymotion.com
http://xamarin.com
http://www.embarcadero.com/products/delphi/ios-development
http://www.adobe.com/devnet/air/air_for_ios.html
If no one liked Objective C you wouldn't have people like Mattt Thompson taking time to write his excellent NSHipster columns.
http://nshipster.com
https://github.com/mattt
http://postgresapp.com
You not liking a language is not a benchmark of language popularity. If it were, my own biases would dictate that Javascript is a language no one likes, propped up by Mozilla and ECMA.
FTA: the concept of “nothing” in Objective-C is kind of a mess, since there’s four different versions of it
The article is about nil, not about that.
And yes, part of it is a kludge.
I think that’s only NSNull, and that, technically, isn’t a language issue, but a library one. As https://nshipster.com/nil/ (which explains all of this) says:
NSNull is used throughout Foundation and other frameworks to skirt around the limitations of collections like NSArray and NSDictionary not being able to contain nil values. You can think of NSNull as effectively boxing the NULL or nil value so that it can be used in collections.
I think a better implementation would use a private singleton NSNull inside the container as a sentinel, so that users of the class could store nil values.
Sure. Hacking with Swift [0] is great, CS193P [1] is very good (previous years were UIKit, now it's SwiftUI). Ray Wenderlich [2] and Swift by Sundell [3] are also good resources. The OG was NSHipster [4], but they haven't published much recently (some articles may be a bit outdated). For SwiftUI specifically, Swift with Majid [5] is a godsend and has amazing content. Finally, for learning good Swift language practices, the Swift book [6] is very friendly.
Edit: forgot https://www.objc.io, definitely one of the best
[0]: https://www.hackingwithswift.com
[1]: https://cs193p.sites.stanford.edu
[2]: https://www.raywenderlich.com
[3]: https://www.swiftbysundell.com
[4]: https://nshipster.com
[5]: https://swiftwithmajid.com
[6]: https://docs.swift.org/swift-book/
It’s not just an abstraction layer over SQLite, or any database, for that matter, even though it is even often used and thus thought of as an ORM.
It does have a persistence layer, but it is not it’s persistence layer.
See https://nshipster.com/core-data-libraries-and-utilities/
> Contrary to popular belief, Core Data is not an Object-Relational Mapper, but rather an object graph and persistence framework [...] Using Core Data as an ORM necessarily limits the capabilities of Core Data and muddies its conceptual purity. But for many developers longing for the familiarity of an ORM, this trade-off is a deal at twice the price!
Edit: should have read the post before replying to comments ^^’