NSHipster
nshipster.com · Group blog · on HN since 2012
NSHipster, started by Mattt, is a journal of lesser-known details of Objective-C, Swift and Cocoa development on Apple platforms.
What HN saysHN commenters list it among favorite iOS development resources, call it the original of its kind, and praise its documentation and code samples.
135HN people shared it
59linked it in comments
124stories submitted
1.7Kstory points
8 months agolast shared
2012people per year2026
Most-shared posts
- 1NSHipster: a journal of the overlooked bits in Objective-C15 people · 94 points · first shared 2012 · 19 comments on HN
- 2Network Link Conditioner13 people · 1 points · first shared 2014 · discussion on HN
- 3Method Swizzling7 people · 3 points · first shared 2014 · discussion on HN
- 4As We May Code6 people · 18 points · first shared 2020 · discussion on HN
- 5nil, Nil, NULL, NSNull5 people · 58 points · first shared 2013 · 63 comments on HN
- 6Core Data Libraries & Utilities : NSHipster5 people · 3 points · first shared 2013 · discussion on HN
- 7Device Identifiers and Fingerprinting on iOS5 people · 3 points · first shared 2019 · discussion on HN
- 8Uncertain<T>4 people · 456 points · first shared 2025 · 98 comments on HN
- 9Cross-Pollination3 people · 7 points · first shared 2020 · discussion on HN
- 10IOS 83 people · 5 points · first shared 2014 · discussion on HN
- 11Contact Tracing3 people · 5 points · first shared 2020 · discussion on HN
- 12Swift Property Wrappers3 people · 5 points · first shared 2019 · discussion on HN
- 13Objective-C Direct Methods3 people · 4 points · first shared 2019 · discussion on HN
- 14Language Server Protocol3 people · 3 points · first shared 2018 · discussion on HN
- 15IBInspectable / IBDesignable3 people · 1 points · first shared 2015 · discussion on HN
What HN people wrote when they linked it
barnaclejive · 2016-04-05
More Favorites:
- iOS Cookies (http://www.ioscookies.com/)
- iOS Goodies (http://ios-goodies.com/)
- NSHipster (http://nshipster.com/)
- Cocoa With Love (http://www.cocoawithlove.com/)
cmyr · 2015-12-03
Yea that's great; he's has a clear understanding of what it means to write and maintain a third party package[1] and he's also exceptionally good at writing documentation and code samples[2].
1: https://github.com/Alamofire/Alamofire
2: http://nshipster.com
danappelxx · 2021-05-24
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/
w-m · 2019-01-11
I was wondering whether that means that Xcode will adopt LSP as well and found this article: https://nshipster.com/language-server-protocol/
"Getting Xcode to use our new LSP service should make it viable to use other LSP services as well, and it’s something that we are interested in, but we don’t have specific plans to announce at this moment."
It would be great if this becomes reality. I currently hate switching editors/IDEs for a project using several technologies, because e.g. Xcode is great at C++ debugging but terrible at CUDA editing.
nimeshneema · 2016-04-05
I'll add a few of my favourites:
- iOS Dev Weekly (https://iosdevweekly.com/)
- Little Bites of Cocoa (https://littlebitesofcocoa.com/)
- objc (https://www.objc.io/)
- NSHipster (http://nshipster.com/)
- NSBlog / Friday Q&A from Mike Ash (https://www.mikeash.com/pyblog/)
- This Week in Swift (https://swiftnews.curated.co/)
- Erica Sadun (http://ericasadun.com/)
- Quality Coding (http://qualitycoding.org/)
- Use Your Loaf (http://useyourloaf.com/)
- Swift Monthly (http://swiftmonthly.com/)
- Cocoa, Objective-C and Swift programming News aggregator (https://twitter.com/cocoadevblogs)
koreyhinton · 2015-05-29
Seeing there are no blogs listed for iOS dev, here are my favorites:
https://www.mikeash.com/pyblog/
http://nshipster.com/
http://natashatherobot.com/
http://oleb.net/blog/
Also I have a blog: http://koreyhinton.com/blog
coob · 2015-02-10
Xcode 6's additions to Interface Builder allow for similar tools to be built now. Here's a great NSHipster article that details a modern take on the Calculator Construction Set:
http://nshipster.com/ibinspectable-ibdesignable/
rrrrrraul · 2014-10-10
I used pretty much all the resources already mentioned (Big Nerd Ranch, Raywenderlich, Stanford course), but I'd like to add a few more to the mix - check out http://objc.io , http://nshipster.com and http://nsscreencast.com
Note - I have no affiliation to any of the links above, I just think they're good resources. Good luck!
sosuke · 2014-08-26
I've had the same thoughts and internal discussions a few times. I recently found these two articles, one talking about using NSCoding instead of CoreData, and the other is about helper libraries to make CoreData easier to manage. Both are good reads if you're working on iOS apps.
http://nshipster.com/nscoding/
http://nshipster.com/core-data-libraries-and-utilities/
Moto7451 · 2014-01-23
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.
michaelx · 2014-01-02
Looks pretty interesting, the whole blog idea in general! Thanks for sharing it with us, I didn't know it and it seems like a good addition to the fabulous http://nshipster.com.
numo16 · 2013-10-15
I moved from straight CoreData to ObjectiveRecord and haven't looked back. There are so many excellent solutions[0] out there that make CoreData much easier to use that I can't see much reason to using CoreData directly any more.
[0]:http://nshipster.com/core-data-libraries-and-utilities/
bennyg · 2013-07-30
There are a few open source libraries for managing CoreData from a higher level now (like NSOperation for GCD).
This post by Mattt Thompson (of course) on NSHipster has links to wrappers, adapters, synchronizers and utilities for working with CoreData: http://nshipster.com/core-data-libraries-and-utilities/
I highly recommend reading that before starting any CoreData project, and reading over that whole site in general to add new tools/concepts to the Objective-C and iOS Framework toolbelt.
applecore · 2013-04-02
His latest work on NSHipster is great too:
http://nshipster.com/icloud/
qrush · 2013-02-13
Call it my crutch, but I got an app shipped without having to worry about a lot of the baggage that comes with Objective-C as a language. Here's two of my favorite examples of things I didn't have to worry about:
http://nshipster.com/nil/ (wat)
http://ashfurrow.com/blog/seven-deadly-sins-of-modern-objective-c (6/7 of these don't apply...testing is something I need to work on though!)
falava · 2013-01-09
Here is a list of some:
http://speirs.org
http://mattgemmell.com
http://www.mikeash.com/pyblog/
http://nshipster.com
http://www.objectivesee.com
http://www.fruitstandsoftware.com/blog/
http://ashfurrow.com/blog/
http://www.cimgf.com/
http://www.cocoawithlove.com/
All of them extracted from here:
http://ashfurrow.com/blog/blog-resources
And some more:
http://objectivesea.tumblr.com/
http://soff.es/
And finally, this is not a blog, but a series of videos, and not all the videos are free ($9/month subscription), but I think it's a great resource:
http://nsscreencast.com/
Edit: added some urls
gurkendoktor · 2017-01-19
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.
Vomzor · 2014-10-24
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-upda…
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-…
iOS tutorials: http://nscookbook.com/recipes/ | http://www.appcoda.com | http://www.raywenderlich.com ! |…
msutherl · 2012-12-16
Link for the lazy: http://nshipster.com/
bwy · 2025-08-29
From https://nshipster.com/uncertainty/ recently: "Working in software, the most annoying part of reaching Senior level is having to say “it depends” all the time. Much more fun getting to say “let’s ship it and iterate” as Staff or “that won’t scale” as a Principal."
IIUC, author is a Staff SWE, so this tracks.
See also "Worse is better" which has been debated a million times by now.
lelandfe · 2024-10-20
There's also an old macOS preference pane called Network Link Conditioner that makes the connections more realistic: https://nshipster.com/network-link-conditioner/
IIRC, Chrome's network simulation just applies a delay after a connection is established
girishso · 2024-01-16
Recently wanted to simulate slow network on Mac and came across Network Link Conditioner, it’s pretty good. No need to setup proxy or anything else. It needs to be installed from Xcode additional tools.
https://nshipster.com/network-link-conditioner/
FlyingSnake · 2023-03-21
> Of you override the dispatch mechanism…
AKA Method Swizzling. ObjC developers took advantage of this feature and it was a wild frontier (but illegal in Apple’s eyes).
1: https://nshipster.com/method-swizzling/
Someone · 2022-04-29
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.
mrtesthah · 2021-11-02
If you have an Apple Developer account, you can install Network Link Conditioner, with works transparently with all types of traffic:
https://nshipster.com/network-link-conditioner/
benmmurphy · 2021-07-07
a lot of iPhone apps also try to collect information from the environment they are running in to try and fingerprint a user. this can be used to track a user even when the apps do not share keychain access. this article on nshipster has a good summary of the technique: https://nshipster.com/device-identifiers/
i've seen extremely high quality fingerprinting being used by some apps and they are going to extreme lengths to hide the collection of this data from apple or other interested parties. over 48 bits of entropy being recorded which should uniquely identify users.
blacktriangle · 2021-03-16
Yep, property wrappers: https://nshipster.com/propertywrapper/
chanandler_bong · 2021-03-15
If you are on a Mac, check out the Network Link Conditioner.
https://nshipster.com/network-link-conditioner/
haspoken · 2020-12-29
ElFitz · 2020-12-22
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 ^^’