CARVIEW |
Select Language
HTTP/2 200
date: Wed, 08 Oct 2025 18:05:47 GMT
content-type: text/html; charset=utf-8
cache-control: max-age=0, private, must-revalidate
cf-cache-status: DYNAMIC
link: ; rel=preload; as=style; nopush,; rel=preload; as=script; nopush,; rel=preload; as=style; nopush,; rel=preload; as=script; nopush,; rel=preload; as=script; nopush
nel: {"report_to":"heroku-nel","response_headers":["Via"],"max_age":3600,"success_fraction":0.01,"failure_fraction":0.1}
referrer-policy: strict-origin-when-cross-origin
report-to: {"group":"heroku-nel","endpoints":[{"url":"https://nel.heroku.com/reports?s=YMeo3rZAemDFTkWsWNxDrl6NFXk0GZlRx3YWV65E5v4%3D\u0026sid=e11707d5-02a7-43ef-b45e-2cf4d2036f7d\u0026ts=1759946747"}],"max_age":3600}
reporting-endpoints: heroku-nel="https://nel.heroku.com/reports?s=YMeo3rZAemDFTkWsWNxDrl6NFXk0GZlRx3YWV65E5v4%3D&sid=e11707d5-02a7-43ef-b45e-2cf4d2036f7d&ts=1759946747"
server: cloudflare
strict-transport-security: max-age=0; includeSubDomains
vary: Accept,Accept-Encoding
via: 2.0 heroku-router
x-content-type-options: nosniff
x-permitted-cross-domain-policies: none
x-request-id: c7342d55-a354-708f-5b47-2fa2e199bd05
x-runtime: 0.138735
x-xss-protection: 0
content-encoding: gzip
set-cookie: _secure_speakerd_session=v6hpeCiI%2BdwLX5Z0vs9INh3s7RDiuMBk9IR6PaEC0jeo6G2YIJU44bE8QrQZFBpNlR99UCjVWjobM1xYQtSF5k1qpNS%2FhiNeBJPSU%2Fc57fu4VhR2vo8ZZyGqkBsVpxzDJHUoJDtmgk4QywLEktHgszHu4u0p%2FRueXPT9mFee7YAQr8T5iTSHg2%2BCjuV1irLEK2N1kSFYR3AQBaLg9tJOy3zAnvRAUP04eSEeQ10%2BEwqBr7xUKgzG2rHsTUZnnMN7UeXK2v2NnIPOzcQinQL2u%2BIEk5Yrrp4NMF4FZjxRYwsWLH%2B4Qw2W2FZSi%2FXJeXY6oJMZO%2Bz5yRI6cvC%2Fd3mbaSZYJUiR24x6q3%2F1e8%2B%2FYJVu3Kg9fWkTzx50BpPKT5204rOTc2oMOw%2BU40qsmsJC36RV--NefjOjHc3n7%2Bwx36--P%2BIQA%2BHPSJcNo%2B4irWAr%2BQ%3D%3D; HttpOnly; SameSite=Lax; Secure; Path=/; Expires=Wed, 22 Oct 2025 18:05:47 GMT
cf-ray: 98b791814ebbc1b5-BLR
Swift on a Deadline - Speaker Deck
Swift on a Deadline
Trying to pull off a complex swift app on a deadline.
Meant to work well with this blog post: https://artsy.github.io/blog/2014/11/13/eidolon-retrospective/
More Decks by Orta
Other Decks in Programming
Featured
Transcript
-
Obj-C // // main.m // snapshots // // Created by
orta therox on 15/12/2007. // Copyright __MyCompanyName__ 2007 . All rights reserved. // @orta -
Overloading public func ==(lhs: UIStoryboardSegue, rhs: SegueIdentifier) -> Bool {
return lhs.identifier == rhs.rawValue } override func prepareForSegue(segue: UIStoryboardSegue, sender: AnyObject?) { if segue == .ShowSaleArtworkDetails { let saleArtwork = sender as SaleArtwork! ... } } @orta -
Lazy lazy var keypadSignal:RACSignal! = self.keypadContainer.keypad?.keypadSignal lazy var clearSignal:RACSignal! =
self.keypadContainer.keypad?.rightSignal lazy var deleteSignal:RACSignal! = self.keypadContainer.keypad?.leftSignal lazy var provider:ReactiveMoyaProvider<ArtsyAPI> = Provider.sharedProvider @orta -
Clo-uncs func isZeroLengthString(string:AnyObject!) -> AnyObject! { return countElements(string as String)
== 0 } ... let numberIsInvalidSignal = RACObserve(bidDetails.newUser, "phoneNumber").map(isZeroLengthString) RAC(confirmButton, "enabled") <~ numberIsInvalidSignal.notEach() @orta -
Inline @IBOutlet var bidButton: Button! @IBAction func bidButtonTapped(sender: AnyObject) {
let identifier = hasAlreadyPlacedABid ? SegueIdentifier.PlaceAnotherBid : SegueIdentifier.ConfirmBid performSegue(identifier) } @orta -
In just six months, Swift’s high performance and clean syntax
have made it the most popular way to find out that SourceKitService Terminated — @Horse_iOS // https://twitter.com/Horse_iOS/status/533027167488454656 @orta -
There is so much you cannot do with Swift, my
code is littered with @objc. NSObject and a whole load more legacy #SwiftLang — @ColinEberhardt - ( Shinobi Controls ) // https://twitter.com/ColinEberhardt/status/ 531506177180700673 @orta -
I started looking at Swift today and I've restarted the
playground at least 20 times in the past hour. Hard to get excited about this… — @chockenberry - ( Twitteriffic.app ) // https://twitter.com/chockenberry/status/ 532270455537692672 @orta -
I’m getting multiple SourceKitService crashed for every(!) line I write
in this Swift project. This stuff is far from ready… — @pieteromvlee - ( Sketch.app ) [^om] // https://twitter.com/pieteromvlee/status/ 531534471708020736 @orta -
For all the crap I give #swift, the syntax is
still much nicer than ObjC. Hopefully the expressiveness of ObjC is brought quickly. — @owensd - ( MS Office ) // https://twitter.com/owensd/status/524972593774743553 @orta -
func waitForBidResolution () -> RACSignal { return self.pollForUpdatedSaleArtwork().then { [weak
self] (_) in return self == nil ? RACSignal.empty() : self!.checkForMaxBid() } .doNext { _ in self.bidIsResolved = true return // If polling fails, we can still show bid confirmation. Do not error. } .catchTo( RACSignal.empty() ) } src @orta -
bidderNetworkModel.createOrGetBidder().doError { (error) -> Void in self.bidderError() } .then {
if !self.placingBid { ARAnalytics.event("Registered New User Only") return RACSignal.empty() } ARAnalytics.event("Started Placing Bid") return self.placeBid() } .then { [weak self] (_) in if self == nil { return RACSignal.empty() } self?.bidCheckingModel = self?.bidCheckingModel ?? self?.createBidCheckingModel() if self?.placingBid == false { return RACSignal.empty() } return self!.bidCheckingModel.waitForBidResolution() } .subscribeCompleted { [weak self] (_) in self?.finishUp() return } src @orta