Archive for October 18, 2016

Tuesday, October 18, 2016

Still With the Mac, Unfashionably

Riccardo Mori:

I still love the Mac. Judging by the tech sites and blogs I usually read, I seem to be in the minority as of late.

[…]

Having a mandatory new version of Mac OS X every year is not necessarily the best way to show you’re still caring, Apple. This self-imposed yearly update cycle makes less and less sense as time goes by. Mac OS X is a mature operating system and should be treated as such. The focus should be on making Mac OS X even more robust and reliable, so that Mac users can update to the next version with the same relative peace of mind as when a new iOS version comes out.

Update (2016-10-24): Smokey Ardisson:

Are these integration features so wide-ranging that they touch every part of the OS and really need an entire new version to ship safely, or are they localized enough that they could safely be released in a point update?

[…]

I think the need not to have to “sell” the OS presents Apple a really unique opportunity that I can imagine some vendors would kill to have—the ability to improve the quality of the software—and thus the user experience—by focusing on the areas that need attention (whatever they may be, new features, improvements, old bugs) without having to cram in a bunch of new tentpole items to entice users to purchase the new version.

Discontinuing Support for Check the Weather

David Smith:

The cost of providing weather data to it has grown too large to sustain. It has been operating at a slight loss for the last 2 years, which I didn’t mind providing as I used the app myself. However, a recent change in the pricing for my radar data provider has made it infeasible to continue providing weather data for the app.

Working Without a Nib

Jeff Johnson:

Four score and minus seventy-two years ago, I brought forth on this internet a new blog post, conceived in levity, and dedicated to the proposition that no nibs are created. Since then, much has changed in the Mac world.

[…]

The problem is that you need to call [myWindow setReleasedWhenClosed:NO]. In pre-ARC code, this would not be surprising to old-school Cocoa coders. However, ARC does not even allow you to use the -release and -autorelease methods, so you might think that -setReleasedWhenClosed: would not be allowed either, or would at least be ignored. And you would be very wrong.

My goal is to make all my projects nibless. Nib and xib files have caused me no end of problems. Even files that haven’t been edited in years spontaneously stop working when Xcode is updated and its xib compiler changes. (Most of the problems manifested on previous OS versions, where it was harder to detect them and to test fixes.) And that’s to say nothing of the advantages that doing interfaces with code offers. I’m convinced that with current technology (e.g. Auto Layout, Swift), using Interface Builder is a poor time investment for non-temporary projects. As Johnson writes:

Initial nib UI implementation is faster, but it’ll haunt you forever.

I’m leaning the same way about Core Data models, except that there seem to be places where the frameworks really want to have a model file saved to disk.

Update (2016-10-19): Steven Woolgar:

Especially with ibtool failing randomly all the damned time.

Marco Arment:

I take back everything nice I said about Interface Builder a few weeks ago on Under The Radar.

Vadim:

After introducing NSStackView there is no more excuse to build any UIs in IB.

Previously: How Much, or How Little, I Use Interface Builder These Days, Stopped Using NIBs Thanks to Auto Layout, Decoding Old Nibs: a Sad Tale of Vendor Lock-in and Abandonment.

Update (2016-10-20): John Stricker:

If you were to restrict yourself to using interface builder for this layout, there are many limitations:

  1. you couldn’t as easily preserve two different styles of the view
  2. you wouldn’t be able to use loops, constants and enums to lay out the view
  3. you wouldn’t be able to adjust the content, size and layouts of the buttons all at once.

Update (2016-10-21): Peter N Lewis:

I use xib’s for everything in Keyboard Maestro. And have special Lint code to detect inconsistencies. Coming to the conclusion I'm an idiot.

Update (2017-06-29): Jeff Johnson:

Many years ago I posted a sample nibless application on my old blog, but since then … much has changed. Given the renewed interest, I've decided to post a brand new sample application.

Update (2017-07-01): See also: iPhreaks Show.

Update (2019-03-07): Cédric Luthi links to all 11 parts of Johnson’s series (tweet).

Update (2020-04-23): Jeff Johnson:

So what happens is that NSApplication keeps a strong reference to all open windows in its ivar _openWindows if the app uses the 10.13 SDK or later, otherwise it doesn’t keep a strong reference, and you’re on your own. Note that the 10.13+ behavior can be overridden by setting the NSUserDefault NSApplicationStronglyReferencesOpenWindows to false, which gives you the 10.12- behavior again.

[…]

The good news, however, is that if your app does have a deployment target of 10.13 or higher, then the memory management of NSWindow becomes relatively simple. It’s almost “magical” again, and we didn’t need NSWindowController.

Amazon Family Vault

Gabe Weatherhead:

Amazon introduced several new photo features for Prime members. The first big one is a new family sharing option. This looks to be a really convenient way for family members to share the unlimited Amazon Drive storage and also keep shared albums.

The semantic search looks great. Similar to Apple and Google, Amazon is attempting to recognize the context of photos and surface the perfect result from a text search. In my very brief testing, it works as described.