Twitter | Search | |
Rob Napier
Swift and Go. Love 'em both. They make me mad in completely different ways. Infosec as required.
11,358
Tweets
309
Following
5,258
Followers
Tweets
Rob Napier 23h
Replying to @cocoaphony
While somewhat Linux specific, it’s valuable to iOS developers to give a baseline of what “raising the bar” on reverse engineering entails.
Reply Retweet Like
Rob Napier 23h
I really enjoyed Programming Linux Anti-Reversing Techniques. Nice primer for anyone thinking of obfuscating code.
Reply Retweet Like
Rob Napier Oct 16
If you like big Marvel action movies at all, this. So much this trailer.
Reply Retweet Like
Rob Napier Oct 15
Reply Retweet Like
Rob Napier retweeted
[i] Collective Idea Oct 12
[i] teammate shares how to use Xcode's Color Assets to manage your app's palette.
Reply Retweet Like
Rob Napier Oct 11
I think the most significant dogfooding will be (is) Apple moving app-level things to Swift. That said, it still prioritizes the "Apple" situation (enterprise; large teams; massive manual QA; huge legacy requirements; access to internals) over others. But a step.
Reply Retweet Like
Rob Napier retweeted
Michael Myersson🦇🎃🦇 Oct 11
Replying to @cocoaphony
Working on app now with three screens, all always in memory. Everything is unowned; app is a communist utopia.
Reply Retweet Like
Rob Napier Oct 11
Another common problem I’ve encountered is totality. When you add a property, it may not be obvious you need to modify ==, esp in extension.
Reply Retweet Like
Rob Napier Oct 11
I dealt with this regularly in ObjC. Caused a number of bugs and was always a concern every time we implemented it.
Reply Retweet Like
Rob Napier Oct 11
Yep. I’m very excited about that.
Reply Retweet Like
Rob Napier Oct 11
Replying to @jl_hfl
Fair, but the approach is generally the same. You should generally take a strong reference to any weak values before entering a block (it's generally bad for things to vanish on you in the middle of processing).
Reply Retweet Like
Rob Napier Oct 11
I think Equatable is quite subtle and we should be very cautious about implementing it by hand for exactly that reason. It's hard to make sure you conform correctly across code changes. So…yeah?
Reply Retweet Like
Rob Napier Oct 11
Replying to @jl_hfl
I'm much more interested in the semantics than the performance. I've rarely found optionals to be a major bottleneck at the iOS app level (and not trivially resolved by moving an if-let outside the loop).
Reply Retweet Like
Rob Napier retweeted
Chris Eidhof Oct 11
Replying to @cocoaphony
I really like it and use it regularly. But I am always a bit afraid of a refactoring breaking its correct usage.
Reply Retweet Like
Rob Napier Oct 11
Replying to @chriseidhof
That's a really interesting point. It has a subtle semantic requirement that isn't enforceable by the compiler.
Reply Retweet Like
Rob Napier Oct 11
I can't decide if I underuse `unowned`. It almost never comes up, but I feel like maybe it should? Does anyone find it used much?
Reply Retweet Like
Rob Napier retweeted
SpookyStraws Oct 10
You may or may not know that iOS development legend Erica Sadun has been terrifically unwell over summer:
Reply Retweet Like
Rob Napier retweeted
Nick Lockwood Oct 11
A good example for me is `UIResponder.nextResponder` - Swift shortens `nextResponder` to `next`, which makes no sense for subclasses.
Reply Retweet Like
Rob Napier Oct 11
Replying to @mugunthkumar @lxcid
(That said, I think Swift gets a little over-terse at times, and a few more types hints at the call site would make reviewing code easier.)
Reply Retweet Like
Rob Napier Oct 11
Replying to @mugunthkumar @lxcid
Swift maintains the same opinion when types are weak (as in ObjC). It only changes its opinion when types are strong. ObjC's opinion is also driven by the lack of overloading. You can't have both -removeAt:(NSIndexPath*) and -removeAt:(NSInteger) in ObjC; you can in Swift.
Reply Retweet Like