Suche senden
Hochladen
描画とビジネスをクリーンに分ける(公開用)
•
1 gefällt mir
•
1,284 views
Kenji Tanaka
Folgen
try! Swift Tokyo 2017 Aftershowの登壇資料 https://cyberagent.connpass.com/event/50584/
Weniger lesen
Mehr lesen
Technologie
Melden
Teilen
Melden
Teilen
1 von 43
Jetzt herunterladen
Downloaden Sie, um offline zu lesen
Empfohlen
VC「もしかして...」Model「私たち...」「「入れ替わってるー!?」」を前前前世から防ぐ方法
VC「もしかして...」Model「私たち...」「「入れ替わってるー!?」」を前前前世から防ぐ方法
Kenji Tanaka
節子、それViewControllerやない...、FatViewControllerや...。
節子、それViewControllerやない...、FatViewControllerや...。
Kenji Tanaka
Blending Culture in Twitter Client
Blending Culture in Twitter Client
Kenji Tanaka
Awesome State Management for React and Other Virtual-Dom Libraries
Awesome State Management for React and Other Virtual-Dom Libraries
FITC
Introductionandgreetings
Introductionandgreetings
Pozz ZaRat
Chainable datasource
Chainable datasource
CocoaHeads France
Daniel Jalkut - dotSwift 2019
Daniel Jalkut - dotSwift 2019
DanielJalkut
Everything You (N)ever Wanted to Know about Testing View Controllers
Everything You (N)ever Wanted to Know about Testing View Controllers
Brian Gesiak
Empfohlen
VC「もしかして...」Model「私たち...」「「入れ替わってるー!?」」を前前前世から防ぐ方法
VC「もしかして...」Model「私たち...」「「入れ替わってるー!?」」を前前前世から防ぐ方法
Kenji Tanaka
節子、それViewControllerやない...、FatViewControllerや...。
節子、それViewControllerやない...、FatViewControllerや...。
Kenji Tanaka
Blending Culture in Twitter Client
Blending Culture in Twitter Client
Kenji Tanaka
Awesome State Management for React and Other Virtual-Dom Libraries
Awesome State Management for React and Other Virtual-Dom Libraries
FITC
Introductionandgreetings
Introductionandgreetings
Pozz ZaRat
Chainable datasource
Chainable datasource
CocoaHeads France
Daniel Jalkut - dotSwift 2019
Daniel Jalkut - dotSwift 2019
DanielJalkut
Everything You (N)ever Wanted to Know about Testing View Controllers
Everything You (N)ever Wanted to Know about Testing View Controllers
Brian Gesiak
How to build an AngularJS backend-ready app WITHOUT BACKEND
How to build an AngularJS backend-ready app WITHOUT BACKEND
Enrique Oriol Bermúdez
Aplicacoes dinamicas Rails com Backbone
Aplicacoes dinamicas Rails com Backbone
Rafael Felix da Silva
MVI - Managing State The Kotlin Way
MVI - Managing State The Kotlin Way
Zeyad Gasser
Design Patterns for Tablets and Smartphones
Design Patterns for Tablets and Smartphones
Michael Galpin
meet.js - QooXDoo
meet.js - QooXDoo
Radek Benkel
Tinkerbelles return home from their Guinness world-record attempt on Sunday
Tinkerbelles return home from their Guinness world-record attempt on Sunday
chicagonewsyesterday
Standford 2015 week6
Standford 2015 week6
彼得潘 Pan
Prescribing RX Responsibly
Prescribing RX Responsibly
Nareg Khoshafian
Alloy Tips & Tricks #TiLon
Alloy Tips & Tricks #TiLon
Fokke Zandbergen
Sbaw091117
Sbaw091117
Atsushi Tadokoro
Session 2
Session 2
alfador
Angular 2 - Ahead of-time Compilation
Angular 2 - Ahead of-time Compilation
Eyal Vardi
Modules and injector
Modules and injector
Eyal Vardi
Angular 2 Architecture
Angular 2 Architecture
Eyal Vardi
AngularJS, More Than Directives !
AngularJS, More Than Directives !
Gaurav Behere
AngularJS $Provide Service
AngularJS $Provide Service
Eyal Vardi
Testing ASP.net Web Applications using Ruby
Testing ASP.net Web Applications using Ruby
Ben Hall
What's new in iOS9
What's new in iOS9
CocoaHeads France
Joan miro
Joan miro
ahcb
Standford 2015 week4: 1.Protocols and Delegation, Gestures 2. Multiple MVCs
Standford 2015 week4: 1.Protocols and Delegation, Gestures 2. Multiple MVCs
彼得潘 Pan
初めてのQuickで初めてのテスト
初めてのQuickで初めてのテスト
Kenji Tanaka
Swift イニシャライザー復習会 #love_swift #akibaswift #21cafe
Swift イニシャライザー復習会 #love_swift #akibaswift #21cafe
Tomohiro Kumagai
Weitere ähnliche Inhalte
Was ist angesagt?
How to build an AngularJS backend-ready app WITHOUT BACKEND
How to build an AngularJS backend-ready app WITHOUT BACKEND
Enrique Oriol Bermúdez
Aplicacoes dinamicas Rails com Backbone
Aplicacoes dinamicas Rails com Backbone
Rafael Felix da Silva
MVI - Managing State The Kotlin Way
MVI - Managing State The Kotlin Way
Zeyad Gasser
Design Patterns for Tablets and Smartphones
Design Patterns for Tablets and Smartphones
Michael Galpin
meet.js - QooXDoo
meet.js - QooXDoo
Radek Benkel
Tinkerbelles return home from their Guinness world-record attempt on Sunday
Tinkerbelles return home from their Guinness world-record attempt on Sunday
chicagonewsyesterday
Standford 2015 week6
Standford 2015 week6
彼得潘 Pan
Prescribing RX Responsibly
Prescribing RX Responsibly
Nareg Khoshafian
Alloy Tips & Tricks #TiLon
Alloy Tips & Tricks #TiLon
Fokke Zandbergen
Sbaw091117
Sbaw091117
Atsushi Tadokoro
Session 2
Session 2
alfador
Angular 2 - Ahead of-time Compilation
Angular 2 - Ahead of-time Compilation
Eyal Vardi
Modules and injector
Modules and injector
Eyal Vardi
Angular 2 Architecture
Angular 2 Architecture
Eyal Vardi
AngularJS, More Than Directives !
AngularJS, More Than Directives !
Gaurav Behere
AngularJS $Provide Service
AngularJS $Provide Service
Eyal Vardi
Testing ASP.net Web Applications using Ruby
Testing ASP.net Web Applications using Ruby
Ben Hall
What's new in iOS9
What's new in iOS9
CocoaHeads France
Joan miro
Joan miro
ahcb
Standford 2015 week4: 1.Protocols and Delegation, Gestures 2. Multiple MVCs
Standford 2015 week4: 1.Protocols and Delegation, Gestures 2. Multiple MVCs
彼得潘 Pan
Was ist angesagt?
(20)
How to build an AngularJS backend-ready app WITHOUT BACKEND
How to build an AngularJS backend-ready app WITHOUT BACKEND
Aplicacoes dinamicas Rails com Backbone
Aplicacoes dinamicas Rails com Backbone
MVI - Managing State The Kotlin Way
MVI - Managing State The Kotlin Way
Design Patterns for Tablets and Smartphones
Design Patterns for Tablets and Smartphones
meet.js - QooXDoo
meet.js - QooXDoo
Tinkerbelles return home from their Guinness world-record attempt on Sunday
Tinkerbelles return home from their Guinness world-record attempt on Sunday
Standford 2015 week6
Standford 2015 week6
Prescribing RX Responsibly
Prescribing RX Responsibly
Alloy Tips & Tricks #TiLon
Alloy Tips & Tricks #TiLon
Sbaw091117
Sbaw091117
Session 2
Session 2
Angular 2 - Ahead of-time Compilation
Angular 2 - Ahead of-time Compilation
Modules and injector
Modules and injector
Angular 2 Architecture
Angular 2 Architecture
AngularJS, More Than Directives !
AngularJS, More Than Directives !
AngularJS $Provide Service
AngularJS $Provide Service
Testing ASP.net Web Applications using Ruby
Testing ASP.net Web Applications using Ruby
What's new in iOS9
What's new in iOS9
Joan miro
Joan miro
Standford 2015 week4: 1.Protocols and Delegation, Gestures 2. Multiple MVCs
Standford 2015 week4: 1.Protocols and Delegation, Gestures 2. Multiple MVCs
Andere mochten auch
初めてのQuickで初めてのテスト
初めてのQuickで初めてのテスト
Kenji Tanaka
Swift イニシャライザー復習会 #love_swift #akibaswift #21cafe
Swift イニシャライザー復習会 #love_swift #akibaswift #21cafe
Tomohiro Kumagai
20170302 tryswift tasting_tests
20170302 tryswift tasting_tests
Kazuaki Matsuo
Client-Side Deep Learning
Client-Side Deep Learning
Shuichi Tsutsumi
Ca shape layerの塗りつぶしルールでちょっとリッチな描画をしよう
Ca shape layerの塗りつぶしルールでちょっとリッチな描画をしよう
Kenji Tanaka
Writing Your App Swiftly
Writing Your App Swiftly
Sommer Panage
バ、バカな...!ハッカソンの中で成長しているだと...!?
バ、バカな...!ハッカソンの中で成長しているだと...!?
Kenji Tanaka
snapshot ではじめる ローカライズ検証
snapshot ではじめる ローカライズ検証
moko ist
はじめてのUnitTest XCTestに触れて
はじめてのUnitTest XCTestに触れて
Kenji Tanaka
バージョンアップの対応を軽減するためのサービスの構築
バージョンアップの対応を軽減するためのサービスの構築
Toshiyuki Hirata
エンジニアのブログ書きの 心技体
エンジニアのブログ書きの 心技体
Kenji Tanaka
アクセシビリティはじめました
アクセシビリティはじめました
Yuichi Sugiyama
【第二回】Swiftで0からスタートするiOS
【第二回】Swiftで0からスタートするiOS
Kenji Tanaka
エンジニアのためのブログ勉強会(公開用)
エンジニアのためのブログ勉強会(公開用)
Kenji Tanaka
iOSアプリケーションアーキテクチャ選定の鍵を探す
iOSアプリケーションアーキテクチャ選定の鍵を探す
Kenji Tanaka
サイボウズの方向性
サイボウズの方向性
naoki ando
オウンドメディア企画書
オウンドメディア企画書
naoki ando
Preparing for distributed system failures using akka #ScalaMatsuri
Preparing for distributed system failures using akka #ScalaMatsuri
TIS Inc.
Minimizing Decision Fatigue to Improve Team Productivity
Minimizing Decision Fatigue to Improve Team Productivity
Derek Lee Boire
Swift 3 を書くときに知っておきたい API デザインガイドライン #love_swift #akibaswift
Swift 3 を書くときに知っておきたい API デザインガイドライン #love_swift #akibaswift
Tomohiro Kumagai
Andere mochten auch
(20)
初めてのQuickで初めてのテスト
初めてのQuickで初めてのテスト
Swift イニシャライザー復習会 #love_swift #akibaswift #21cafe
Swift イニシャライザー復習会 #love_swift #akibaswift #21cafe
20170302 tryswift tasting_tests
20170302 tryswift tasting_tests
Client-Side Deep Learning
Client-Side Deep Learning
Ca shape layerの塗りつぶしルールでちょっとリッチな描画をしよう
Ca shape layerの塗りつぶしルールでちょっとリッチな描画をしよう
Writing Your App Swiftly
Writing Your App Swiftly
バ、バカな...!ハッカソンの中で成長しているだと...!?
バ、バカな...!ハッカソンの中で成長しているだと...!?
snapshot ではじめる ローカライズ検証
snapshot ではじめる ローカライズ検証
はじめてのUnitTest XCTestに触れて
はじめてのUnitTest XCTestに触れて
バージョンアップの対応を軽減するためのサービスの構築
バージョンアップの対応を軽減するためのサービスの構築
エンジニアのブログ書きの 心技体
エンジニアのブログ書きの 心技体
アクセシビリティはじめました
アクセシビリティはじめました
【第二回】Swiftで0からスタートするiOS
【第二回】Swiftで0からスタートするiOS
エンジニアのためのブログ勉強会(公開用)
エンジニアのためのブログ勉強会(公開用)
iOSアプリケーションアーキテクチャ選定の鍵を探す
iOSアプリケーションアーキテクチャ選定の鍵を探す
サイボウズの方向性
サイボウズの方向性
オウンドメディア企画書
オウンドメディア企画書
Preparing for distributed system failures using akka #ScalaMatsuri
Preparing for distributed system failures using akka #ScalaMatsuri
Minimizing Decision Fatigue to Improve Team Productivity
Minimizing Decision Fatigue to Improve Team Productivity
Swift 3 を書くときに知っておきたい API デザインガイドライン #love_swift #akibaswift
Swift 3 を書くときに知っておきたい API デザインガイドライン #love_swift #akibaswift
Ähnlich wie 描画とビジネスをクリーンに分ける(公開用)
描画とビジネスをクリーンに分ける Osaka 公開用
描画とビジネスをクリーンに分ける Osaka 公開用
Kenji Tanaka
Swift Delhi: Practical POP
Swift Delhi: Practical POP
Natasha Murashev
Practical Protocol-Oriented-Programming
Practical Protocol-Oriented-Programming
Natasha Murashev
Practialpop 160510130818
Practialpop 160510130818
Shahzain Saeed
MCE^3 - Natasha Murashev - Practical Protocol-Oriented Programming in Swift
MCE^3 - Natasha Murashev - Practical Protocol-Oriented Programming in Swift
PROIDEA
Say bye to Fragments with Conductor & Kotlin
Say bye to Fragments with Conductor & Kotlin
Miquel Beltran Febrer
Smooth scrolling in UITableView and UICollectionView
Smooth scrolling in UITableView and UICollectionView
Andrea Prearo
Swf2 ui
Swf2 ui
Futada Takashi
Creating Container View Controllers
Creating Container View Controllers
Bob McCune
RxBinding-kotlin
RxBinding-kotlin
Satoru Fujiwara
Secret unit testing tools
Secret unit testing tools
Dror Helper
ASP.NET MVC Internals
ASP.NET MVC Internals
Vitaly Baum
Djangocon 2014 angular + django
Djangocon 2014 angular + django
Nina Zakharenko
Working effectively with ViewModels and TDD - UA Mobile 2019
Working effectively with ViewModels and TDD - UA Mobile 2019
UA Mobile
iOS_Presentation
iOS_Presentation
Emannuel Carvalho
Apple Templates Considered Harmful
Apple Templates Considered Harmful
Brian Gesiak
I os 11
I os 11
信嘉 陳
Optimize CollectionView Scrolling
Optimize CollectionView Scrolling
Andrea Prearo
Controllers & actions
Controllers & actions
Eyal Vardi
French kit2019
French kit2019
Nataliya Patsovska
Ähnlich wie 描画とビジネスをクリーンに分ける(公開用)
(20)
描画とビジネスをクリーンに分ける Osaka 公開用
描画とビジネスをクリーンに分ける Osaka 公開用
Swift Delhi: Practical POP
Swift Delhi: Practical POP
Practical Protocol-Oriented-Programming
Practical Protocol-Oriented-Programming
Practialpop 160510130818
Practialpop 160510130818
MCE^3 - Natasha Murashev - Practical Protocol-Oriented Programming in Swift
MCE^3 - Natasha Murashev - Practical Protocol-Oriented Programming in Swift
Say bye to Fragments with Conductor & Kotlin
Say bye to Fragments with Conductor & Kotlin
Smooth scrolling in UITableView and UICollectionView
Smooth scrolling in UITableView and UICollectionView
Swf2 ui
Swf2 ui
Creating Container View Controllers
Creating Container View Controllers
RxBinding-kotlin
RxBinding-kotlin
Secret unit testing tools
Secret unit testing tools
ASP.NET MVC Internals
ASP.NET MVC Internals
Djangocon 2014 angular + django
Djangocon 2014 angular + django
Working effectively with ViewModels and TDD - UA Mobile 2019
Working effectively with ViewModels and TDD - UA Mobile 2019
iOS_Presentation
iOS_Presentation
Apple Templates Considered Harmful
Apple Templates Considered Harmful
I os 11
I os 11
Optimize CollectionView Scrolling
Optimize CollectionView Scrolling
Controllers & actions
Controllers & actions
French kit2019
French kit2019
Mehr von Kenji Tanaka
FatViewControllerを安全に書き換える方法が見つからなかったので、どういう痛みを許容するか考えた #iosdc
FatViewControllerを安全に書き換える方法が見つからなかったので、どういう痛みを許容するか考えた #iosdc
Kenji Tanaka
リリース前のリグレッションテストがめんどい!のでMagic PodでUIテストを試してみる #pixiv_app_night
リリース前のリグレッションテストがめんどい!のでMagic PodでUIテストを試してみる #pixiv_app_night
Kenji Tanaka
ポストモーテムやってみた #yjbonfire
ポストモーテムやってみた #yjbonfire
Kenji Tanaka
2つの同期 4つの状態 #pixiv_ios_arch
2つの同期 4つの状態 #pixiv_ios_arch
Kenji Tanaka
2つの同期 4つの状態 #app_mp
2つの同期 4つの状態 #app_mp
Kenji Tanaka
2つの同期 4つの状態 #roppongiswift
2つの同期 4つの状態 #roppongiswift
Kenji Tanaka
トークンリフレッシュ処理を含むAPIClientのテスト #hakata_test_night
トークンリフレッシュ処理を含むAPIClientのテスト #hakata_test_night
Kenji Tanaka
よく使うテストヘルパーの紹介 #ios_test_night
よく使うテストヘルパーの紹介 #ios_test_night
Kenji Tanaka
Swiftで聞いておぼえるテスト書き
Swiftで聞いておぼえるテスト書き
Kenji Tanaka
設計時空のリファクタリング
設計時空のリファクタリング
Kenji Tanaka
WACATE 2018 Summer
WACATE 2018 Summer
Kenji Tanaka
テスト駆動開発入門 by Swift
テスト駆動開発入門 by Swift
Kenji Tanaka
An iOS Engineer challenges Web.
An iOS Engineer challenges Web.
Kenji Tanaka
エンジニアのためのブログ講座Ver4
エンジニアのためのブログ講座Ver4
Kenji Tanaka
TDDやってみよ
TDDやってみよ
Kenji Tanaka
ストレス社会に生きる、iOSエンジニアにオススメする百合の世界と作品
ストレス社会に生きる、iOSエンジニアにオススメする百合の世界と作品
Kenji Tanaka
iOS 11からのDeviceCheck #とは
iOS 11からのDeviceCheck #とは
Kenji Tanaka
設計に答えはないから探してみよう
設計に答えはないから探してみよう
Kenji Tanaka
iOS 11からのアプリ間ファイル共有
iOS 11からのアプリ間ファイル共有
Kenji Tanaka
iOS 11からのアプリ間ファイル共有_公開用
iOS 11からのアプリ間ファイル共有_公開用
Kenji Tanaka
Mehr von Kenji Tanaka
(20)
FatViewControllerを安全に書き換える方法が見つからなかったので、どういう痛みを許容するか考えた #iosdc
FatViewControllerを安全に書き換える方法が見つからなかったので、どういう痛みを許容するか考えた #iosdc
リリース前のリグレッションテストがめんどい!のでMagic PodでUIテストを試してみる #pixiv_app_night
リリース前のリグレッションテストがめんどい!のでMagic PodでUIテストを試してみる #pixiv_app_night
ポストモーテムやってみた #yjbonfire
ポストモーテムやってみた #yjbonfire
2つの同期 4つの状態 #pixiv_ios_arch
2つの同期 4つの状態 #pixiv_ios_arch
2つの同期 4つの状態 #app_mp
2つの同期 4つの状態 #app_mp
2つの同期 4つの状態 #roppongiswift
2つの同期 4つの状態 #roppongiswift
トークンリフレッシュ処理を含むAPIClientのテスト #hakata_test_night
トークンリフレッシュ処理を含むAPIClientのテスト #hakata_test_night
よく使うテストヘルパーの紹介 #ios_test_night
よく使うテストヘルパーの紹介 #ios_test_night
Swiftで聞いておぼえるテスト書き
Swiftで聞いておぼえるテスト書き
設計時空のリファクタリング
設計時空のリファクタリング
WACATE 2018 Summer
WACATE 2018 Summer
テスト駆動開発入門 by Swift
テスト駆動開発入門 by Swift
An iOS Engineer challenges Web.
An iOS Engineer challenges Web.
エンジニアのためのブログ講座Ver4
エンジニアのためのブログ講座Ver4
TDDやってみよ
TDDやってみよ
ストレス社会に生きる、iOSエンジニアにオススメする百合の世界と作品
ストレス社会に生きる、iOSエンジニアにオススメする百合の世界と作品
iOS 11からのDeviceCheck #とは
iOS 11からのDeviceCheck #とは
設計に答えはないから探してみよう
設計に答えはないから探してみよう
iOS 11からのアプリ間ファイル共有
iOS 11からのアプリ間ファイル共有
iOS 11からのアプリ間ファイル共有_公開用
iOS 11からのアプリ間ファイル共有_公開用
Kürzlich hochgeladen
Artificial Intelligence: Facts and Myths
Artificial Intelligence: Facts and Myths
Joaquim Jorge
Top 5 Benefits OF Using Muvi Live Paywall For Live Streams
Top 5 Benefits OF Using Muvi Live Paywall For Live Streams
Roshan Dwivedi
presentation ICT roal in 21st century education
presentation ICT roal in 21st century education
jfdjdjcjdnsjd
Artificial Intelligence Chap.5 : Uncertainty
Artificial Intelligence Chap.5 : Uncertainty
Khushali Kathiriya
Tata AIG General Insurance Company - Insurer Innovation Award 2024
Tata AIG General Insurance Company - Insurer Innovation Award 2024
The Digital Insurer
Repurposing LNG terminals for Hydrogen Ammonia: Feasibility and Cost Saving
Repurposing LNG terminals for Hydrogen Ammonia: Feasibility and Cost Saving
Edi Saputra
ProductAnonymous-April2024-WinProductDiscovery-MelissaKlemke
ProductAnonymous-April2024-WinProductDiscovery-MelissaKlemke
Product Anonymous
Automating Google Workspace (GWS) & more with Apps Script
Automating Google Workspace (GWS) & more with Apps Script
wesley chun
2024: Domino Containers - The Next Step. News from the Domino Container commu...
2024: Domino Containers - The Next Step. News from the Domino Container commu...
Martijn de Jong
Exploring the Future Potential of AI-Enabled Smartphone Processors
Exploring the Future Potential of AI-Enabled Smartphone Processors
debabhi2
From Event to Action: Accelerate Your Decision Making with Real-Time Automation
From Event to Action: Accelerate Your Decision Making with Real-Time Automation
Safe Software
The 7 Things I Know About Cyber Security After 25 Years | April 2024
The 7 Things I Know About Cyber Security After 25 Years | April 2024
Rafal Los
How to Troubleshoot Apps for the Modern Connected Worker
How to Troubleshoot Apps for the Modern Connected Worker
ThousandEyes
A Domino Admins Adventures (Engage 2024)
A Domino Admins Adventures (Engage 2024)
Gabriella Davis
Deploy with confidence: VMware Cloud Foundation 5.1 on next gen Dell PowerEdg...
Deploy with confidence: VMware Cloud Foundation 5.1 on next gen Dell PowerEdg...
Principled Technologies
A Year of the Servo Reboot: Where Are We Now?
A Year of the Servo Reboot: Where Are We Now?
Igalia
Strategies for Unlocking Knowledge Management in Microsoft 365 in the Copilot...
Strategies for Unlocking Knowledge Management in Microsoft 365 in the Copilot...
Drew Madelung
🐬 The future of MySQL is Postgres 🐘
🐬 The future of MySQL is Postgres 🐘
RTylerCroy
Boost Fertility New Invention Ups Success Rates.pdf
Boost Fertility New Invention Ups Success Rates.pdf
sudhanshuwaghmare1
HTML Injection Attacks: Impact and Mitigation Strategies
HTML Injection Attacks: Impact and Mitigation Strategies
Boston Institute of Analytics
Kürzlich hochgeladen
(20)
Artificial Intelligence: Facts and Myths
Artificial Intelligence: Facts and Myths
Top 5 Benefits OF Using Muvi Live Paywall For Live Streams
Top 5 Benefits OF Using Muvi Live Paywall For Live Streams
presentation ICT roal in 21st century education
presentation ICT roal in 21st century education
Artificial Intelligence Chap.5 : Uncertainty
Artificial Intelligence Chap.5 : Uncertainty
Tata AIG General Insurance Company - Insurer Innovation Award 2024
Tata AIG General Insurance Company - Insurer Innovation Award 2024
Repurposing LNG terminals for Hydrogen Ammonia: Feasibility and Cost Saving
Repurposing LNG terminals for Hydrogen Ammonia: Feasibility and Cost Saving
ProductAnonymous-April2024-WinProductDiscovery-MelissaKlemke
ProductAnonymous-April2024-WinProductDiscovery-MelissaKlemke
Automating Google Workspace (GWS) & more with Apps Script
Automating Google Workspace (GWS) & more with Apps Script
2024: Domino Containers - The Next Step. News from the Domino Container commu...
2024: Domino Containers - The Next Step. News from the Domino Container commu...
Exploring the Future Potential of AI-Enabled Smartphone Processors
Exploring the Future Potential of AI-Enabled Smartphone Processors
From Event to Action: Accelerate Your Decision Making with Real-Time Automation
From Event to Action: Accelerate Your Decision Making with Real-Time Automation
The 7 Things I Know About Cyber Security After 25 Years | April 2024
The 7 Things I Know About Cyber Security After 25 Years | April 2024
How to Troubleshoot Apps for the Modern Connected Worker
How to Troubleshoot Apps for the Modern Connected Worker
A Domino Admins Adventures (Engage 2024)
A Domino Admins Adventures (Engage 2024)
Deploy with confidence: VMware Cloud Foundation 5.1 on next gen Dell PowerEdg...
Deploy with confidence: VMware Cloud Foundation 5.1 on next gen Dell PowerEdg...
A Year of the Servo Reboot: Where Are We Now?
A Year of the Servo Reboot: Where Are We Now?
Strategies for Unlocking Knowledge Management in Microsoft 365 in the Copilot...
Strategies for Unlocking Knowledge Management in Microsoft 365 in the Copilot...
🐬 The future of MySQL is Postgres 🐘
🐬 The future of MySQL is Postgres 🐘
Boost Fertility New Invention Ups Success Rates.pdf
Boost Fertility New Invention Ups Success Rates.pdf
HTML Injection Attacks: Impact and Mitigation Strategies
HTML Injection Attacks: Impact and Mitigation Strategies
描画とビジネスをクリーンに分ける(公開用)
1.
2.
📦
3.
🍧
4.
5.
🍧
6.
🍧 😂
7.
🍧 😂
8.
9.
10.
11.
12.
🤔
13.
14.
15.
class ViewController: UIViewController
{ @IBOutlet weak var tableView: UITableView! var tweets: [Tweet] = [] override func viewDidLoad() { super.viewDidLoad() getTweets() { [unowned self] result in switch result { case .success(let tweets): self.tweets = tweets self.tableView.reloadData() case .failure: () // } } } }
16.
class ViewController: UIViewController
{ @IBOutlet weak var tableView: UITableView! var tweets: [Tweet] = [] override func viewDidLoad() { super.viewDidLoad() getTweets() { [unowned self] result in switch result { case .success(let tweets): self.tweets = tweets self.tableView.reloadData() case .failure: () // } } } } 👊😤💢
17.
18.
19.
20.
21.
22.
protocol ViewControllerOutput: class
{ func reloadTableView() } class ViewController: UIViewController { @IBOutlet weak var tableView: UITableView! var presenter: SomePresenter! override func viewDidLoad() { super.viewDidLoad() presenter = SomePresenter(output: self) presenter.getTweets() } } extension ViewController: ViewControllerOutput { func reloadTableView() { tableView.reloadData() } }
23.
protocol ViewControllerOutput: class
{ func reloadTableView() } class ViewController: UIViewController { @IBOutlet weak var tableView: UITableView! var presenter: SomePresenter! override func viewDidLoad() { super.viewDidLoad() presenter = SomePresenter(output: self) presenter.getTweets() } } extension ViewController: ViewControllerOutput { func reloadTableView() { tableView.reloadData() } }
24.
protocol ViewControllerOutput: class
{ func reloadTableView() } class ViewController: UIViewController { @IBOutlet weak var tableView: UITableView! var presenter: SomePresenter! override func viewDidLoad() { super.viewDidLoad() presenter = SomePresenter(output: self) presenter.getTweets() } } extension ViewController: ViewControllerOutput { func reloadTableView() { tableView.reloadData() } }
25.
class SomePresenter { let
output: ViewControllerOutput! var tweets: [Tweet] = [] init(output: ViewControllerOutput) { self.output = output } func getTweets() { let twitterManager = TwitterManager() twitterManager.fetchTimeline() { [unowned self] result in switch result { case .success(let tweets): self.tweets = tweets self.output.reloadTableView() case .failure: () // } } } }
26.
class ViewController: UIViewController
{ @IBOutlet weak var tableView: UITableView! var presenter: SomePresenter! override func viewDidLoad() { super.viewDidLoad() presenter = SomePresenter(output: self) presenter.getTweets() } } class ViewController: UIViewController { @IBOutlet weak var tableView: UITableView! var tweets: [Tweet] = [] override func viewDidLoad() { super.viewDidLoad() getTweets() { [unowned self] result in switch result { case .success(let tweets): self.tweets = tweets self.tableView.reloadData() case .failure: () // } } } }
27.
28.
👋
29.
30.
31.
🍧
32.
33.
34.
35.
36.
37.
38.
39.
🎂 🎂 🎂 🎂
40.
41.
42.
💪📦
Jetzt herunterladen