Hacker News new | ask | show | jobs
by Zev 4895 days ago
A lot of Apple stuff may be a black box but it is designed to be subclassed.

Aside from a small number of top-level classes[1] UIKit isn't designed to be subclassed. When you subclass things like UIAlertView, UIButton, UISwitch, UITextField, UIWebView… etc, you're in for a world undocumented gotchas and spending hours to do small simple things.

1. UIView, UIControl, UITableViewCell, UIScrollView, UIGestureRecognizer, UIViewController, UIApplication and maybe one or two other classes.

1 comments

And you've listed about 90% of the things I usual end up subclassing because I've hit some limitation.

Also I wasn't talking specifically about UIKit. Foundation is another great framework that I've subclassed many times.

It's not perfect but Apple puts a lot of work into documenting how to subclass their frameworks. Third-party UI frameworks like this are much less forgiving.

Can you give an example of some things that you subclass?
From Foundation? NSDictionary, NSArray and NSOperation instantly jump to mind.
What do you get out of subclassing NSDictionary or NSArray that you don't get out of a category?
Well in this case I subclassed them so I could have the backing data source only weakly reference the items in the dictionary/array and because I subclassed them I can use them wherever NSDictionary or NSArray is an accepted parameter.

Apple's documentation also gives some examples:

https://developer.apple.com/library/ios/#documentation/Cocoa...

https://developer.apple.com/library/ios/#documentation/Cocoa...

Why not use CFDictionaryRef and pass it along via toll-free bridging?