SlideShare a Scribd company logo
1 of 35
NAVER
G-LINK
조경환
UIKit framework
UIKit framework
New UIPreviewInteraction class
New UIPreviewInteractionDelegate protocol
UIKit framework
Tab Bar items
UIKit framework
Advances in UIKit Animations
UIViewAnimating Protocol, UIViewPropertyAnimator
Class, UITimingCurveProvider Protocol,
UICubicTimingParameters Class, and
UISpringTimingParameters Class.
UIKit framework
New UIPasteboard API
UIKit framework
New UIApplication method
openURL:options:completionHandler:
UIKit framework
New UICloudSharingController class
New UICloudSharingControllerDelegate protocol
UIKit framework
New UIAccessibilityCustomRotor class
UIKit framework
new UIFont method
preferredFontForTextStyle:compatibleWithTraitCollect
ion:
UIKit framework
enhancements UICollectionView
UICollectionView in iOS
10
WWDC 16, Session 219
UICollectionView
Life Cycle of a Cell
UICollectionView
Life Cycle of a Cell
Third Protocol
UICollectionView
Life Cycle of a Cell
Third Protocol
Etc
Life Cycle of a Cell in iOS 9
prepareForReuse
Life Cycle of a Cell in iOS 9
prepareForReuse
cellForItemAtIndexPath
Life Cycle of a Cell in iOS 9
prepareForReuse
cellForItemAtIndexPath
willDisplayCell
Life Cycle of a Cell in iOS 9
prepareForReuse
cellForItemAtIndexPath
willDisplayCell
didEndDisplayingCell
reuseQueue
Life Cycle of a Cell in iOS 10
prepareForReuse
cellForItemAtIndexPath
Life Cycle of a Cell in iOS 10
prepareForReuse
cellForItemAtIndexPath
willDisplayCell - lazy
…
2016-06-23 19:13:31.891437 CollViewSmpl[292:31447] cellForItemAtIndexPath 12
2016-06-23 19:13:31.913170 CollViewSmpl[292:31447] cellForItemAtIndexPath 13
2016-06-23 19:13:31.940455 CollViewSmpl[292:31447] cellForItemAtIndexPath 14
2016-06-23 19:13:31.964776 CollViewSmpl[292:31447] cellForItemAtIndexPath 15
2016-06-23 19:13:31.990851 CollViewSmpl[292:31447] willDisplayCell 8
2016-06-23 19:13:31.991025 CollViewSmpl[292:31447] willDisplayCell 9
2016-06-23 19:13:32.558190 CollViewSmpl[292:31447] cellForItemAtIndexPath 16
2016-06-23 19:13:32.579543 CollViewSmpl[292:31447] cellForItemAtIndexPath 17
2016-06-23 19:13:32.606970 CollViewSmpl[292:31447] willDisplayCell 10
2016-06-23 19:13:32.607138 CollViewSmpl[292:31447] willDisplayCell 11
…
Life Cycle of a Cell in iOS 10
prepareForReuse
cellForItemAtIndexPath
willDisplayCell - lazy
didEndDisplayingCell
reuseQueue - lazy
…
2016-06-23 19:18:02.303089 TableViewCellSubviews[297:32126]
didEndDisplayingCell 0
2016-06-23 19:18:02.304791 TableViewCellSubviews[297:32126] willDisplayCell 0
…
Best Practices
Do Heavy lifting in cellForItemAtIndexPath
Do minimal work in
willDisplayCell/didEndDisplayingCell
cellForItemAtIndexPath prepared cell may never
display
What About Expensive Data
Models?
Many cells require expensive data access
Images, databases, Core Data
UICollectionView Pre-Fetching API
protocol UICollectionViewDataSourcePrefetching {
func collectionView(_ collectionView: UICollectionView,
prefetchItemsAt indexPaths: [NSIndexPath])
optional func collectionView(_ collectionView: UICollectionView,
cancelPrefetchingForItemsAt indexPaths: [NSIndexPath])
}
class UICollectionView : UIScrollView {
weak var prefetchDataSource: UICollectionViewDataSourcePrefetching?
var isPrefetchingEnabled: Bool
Pre-Fetching API Tips
Use GCD or NSOperationQueue
Pre-Fetching is an adaptive technology
Use cancelPrefetching API to adapt to shifting user
focus
UITableView Pre-Fetching API
protocol UITableViewDataSourcePrefetching {
func tableView(_ tableView: UITableView, prefetchRowsAt indexPaths: [NSIndexPath])
optional func tableView(_ tableView: UITableView, cancelPrefetchingForRowsAt indexPaths:
[NSIndexPath])
}
class UITableView : UIScrollView {
weak var prefetchDataSource: UITableViewDataSourcePrefetching?
}
Etc
Self-Sizing Cells API Overview
Three options for specifying actual cell size
• Auto Layout
• override sizeThatFits()
• override
preferredLayoutAttributesFittingAttributes()
Automatic Self-Sizing Cells
Estimate
UICollectionViewFlowLayout
• UICollectionViewFlowLayoutAutomaticSize
Interactive reordering - with paging
supportcollectionView.isPagingEnabled = true
UIRefreshControl!
UIRefreshControl now directly supported in
UICollectionView
UITableView
UIScrollView
let refreshControl = UIRefreshControl()
refreshControl.addTarget(self, action: #selector(refreshControlDidFire(_:)),
for: .valueChanged)
collectionView.refreshControl = refreshControl
끝

More Related Content

What's hot

OSGi and Spring Data for simple (Web) Application Development
OSGi and Spring Data  for simple (Web) Application DevelopmentOSGi and Spring Data  for simple (Web) Application Development
OSGi and Spring Data for simple (Web) Application DevelopmentChristian Baranowski
 
Multithreading in Android
Multithreading in AndroidMultithreading in Android
Multithreading in Androidcoolmirza143
 
ID Android TechTalk Series #6 : Google Service and Gradle - Anton Nurdin Tuha...
ID Android TechTalk Series #6 : Google Service and Gradle - Anton Nurdin Tuha...ID Android TechTalk Series #6 : Google Service and Gradle - Anton Nurdin Tuha...
ID Android TechTalk Series #6 : Google Service and Gradle - Anton Nurdin Tuha...Dicoding
 
Local Authentication par Pierre-Alban Toth
Local Authentication par Pierre-Alban TothLocal Authentication par Pierre-Alban Toth
Local Authentication par Pierre-Alban TothCocoaHeads France
 
"Ускорение сборки большого проекта на Objective-C + Swift" Иван Бондарь (Avito)
"Ускорение сборки большого проекта на Objective-C + Swift" Иван Бондарь (Avito)"Ускорение сборки большого проекта на Objective-C + Swift" Иван Бондарь (Avito)
"Ускорение сборки большого проекта на Objective-C + Swift" Иван Бондарь (Avito)AvitoTech
 
Swift server-side-let swift2016
Swift server-side-let swift2016Swift server-side-let swift2016
Swift server-side-let swift2016Eric Ahn
 
jclouds overview
jclouds overviewjclouds overview
jclouds overviewAdrian Cole
 
Modular JavaScript in an OSGi World - S Mak
Modular JavaScript in an OSGi World - S MakModular JavaScript in an OSGi World - S Mak
Modular JavaScript in an OSGi World - S Makmfrancis
 
GWT 2 Is Smarter Than You
GWT 2 Is Smarter Than YouGWT 2 Is Smarter Than You
GWT 2 Is Smarter Than YouRobert Cooper
 
Enterprise Guice 20090217 Bejug
Enterprise Guice 20090217 BejugEnterprise Guice 20090217 Bejug
Enterprise Guice 20090217 Bejugrobbiev
 
React, Redux and es6/7
React, Redux and es6/7React, Redux and es6/7
React, Redux and es6/7Dongho Cho
 
Web application development using Play Framework (with Java)
Web application development using Play Framework (with Java)Web application development using Play Framework (with Java)
Web application development using Play Framework (with Java)Saeed Zarinfam
 
Introduction to AngularJS
Introduction to AngularJSIntroduction to AngularJS
Introduction to AngularJSYoann Gotthilf
 
Log in to a Linux VM in Azure using AAD authentication
Log in to a Linux VM in Azure using AAD authenticationLog in to a Linux VM in Azure using AAD authentication
Log in to a Linux VM in Azure using AAD authenticationTakayoshi Tanaka
 
Universal JS Web Applications with React - Luciano Mammino - Codemotion Rome ...
Universal JS Web Applications with React - Luciano Mammino - Codemotion Rome ...Universal JS Web Applications with React - Luciano Mammino - Codemotion Rome ...
Universal JS Web Applications with React - Luciano Mammino - Codemotion Rome ...Luciano Mammino
 
Entity framework 6
Entity framework 6Entity framework 6
Entity framework 6Ken Tucker
 
OSGi and Java EE: A Hybrid Approach to Enterprise Java Application Development
OSGi and Java EE: A Hybrid Approach to Enterprise Java Application DevelopmentOSGi and Java EE: A Hybrid Approach to Enterprise Java Application Development
OSGi and Java EE: A Hybrid Approach to Enterprise Java Application DevelopmentSanjeeb Sahoo
 
Introduction and hacking OpenStack, Pycon India
Introduction and hacking OpenStack,  Pycon IndiaIntroduction and hacking OpenStack,  Pycon India
Introduction and hacking OpenStack, Pycon IndiaAtul Jha
 

What's hot (20)

OSGi and Spring Data for simple (Web) Application Development
OSGi and Spring Data  for simple (Web) Application DevelopmentOSGi and Spring Data  for simple (Web) Application Development
OSGi and Spring Data for simple (Web) Application Development
 
Multithreading in Android
Multithreading in AndroidMultithreading in Android
Multithreading in Android
 
ID Android TechTalk Series #6 : Google Service and Gradle - Anton Nurdin Tuha...
ID Android TechTalk Series #6 : Google Service and Gradle - Anton Nurdin Tuha...ID Android TechTalk Series #6 : Google Service and Gradle - Anton Nurdin Tuha...
ID Android TechTalk Series #6 : Google Service and Gradle - Anton Nurdin Tuha...
 
Local Authentication par Pierre-Alban Toth
Local Authentication par Pierre-Alban TothLocal Authentication par Pierre-Alban Toth
Local Authentication par Pierre-Alban Toth
 
"Ускорение сборки большого проекта на Objective-C + Swift" Иван Бондарь (Avito)
"Ускорение сборки большого проекта на Objective-C + Swift" Иван Бондарь (Avito)"Ускорение сборки большого проекта на Objective-C + Swift" Иван Бондарь (Avito)
"Ускорение сборки большого проекта на Objective-C + Swift" Иван Бондарь (Avito)
 
Swift server-side-let swift2016
Swift server-side-let swift2016Swift server-side-let swift2016
Swift server-side-let swift2016
 
jclouds overview
jclouds overviewjclouds overview
jclouds overview
 
Liferay (DXP) 7 Tech Meetup for Developers
Liferay (DXP) 7 Tech Meetup for DevelopersLiferay (DXP) 7 Tech Meetup for Developers
Liferay (DXP) 7 Tech Meetup for Developers
 
Modular JavaScript in an OSGi World - S Mak
Modular JavaScript in an OSGi World - S MakModular JavaScript in an OSGi World - S Mak
Modular JavaScript in an OSGi World - S Mak
 
GWT 2 Is Smarter Than You
GWT 2 Is Smarter Than YouGWT 2 Is Smarter Than You
GWT 2 Is Smarter Than You
 
Enterprise Guice 20090217 Bejug
Enterprise Guice 20090217 BejugEnterprise Guice 20090217 Bejug
Enterprise Guice 20090217 Bejug
 
React, Redux and es6/7
React, Redux and es6/7React, Redux and es6/7
React, Redux and es6/7
 
Web application development using Play Framework (with Java)
Web application development using Play Framework (with Java)Web application development using Play Framework (with Java)
Web application development using Play Framework (with Java)
 
Play framework
Play frameworkPlay framework
Play framework
 
Introduction to AngularJS
Introduction to AngularJSIntroduction to AngularJS
Introduction to AngularJS
 
Log in to a Linux VM in Azure using AAD authentication
Log in to a Linux VM in Azure using AAD authenticationLog in to a Linux VM in Azure using AAD authentication
Log in to a Linux VM in Azure using AAD authentication
 
Universal JS Web Applications with React - Luciano Mammino - Codemotion Rome ...
Universal JS Web Applications with React - Luciano Mammino - Codemotion Rome ...Universal JS Web Applications with React - Luciano Mammino - Codemotion Rome ...
Universal JS Web Applications with React - Luciano Mammino - Codemotion Rome ...
 
Entity framework 6
Entity framework 6Entity framework 6
Entity framework 6
 
OSGi and Java EE: A Hybrid Approach to Enterprise Java Application Development
OSGi and Java EE: A Hybrid Approach to Enterprise Java Application DevelopmentOSGi and Java EE: A Hybrid Approach to Enterprise Java Application Development
OSGi and Java EE: A Hybrid Approach to Enterprise Java Application Development
 
Introduction and hacking OpenStack, Pycon India
Introduction and hacking OpenStack,  Pycon IndiaIntroduction and hacking OpenStack,  Pycon India
Introduction and hacking OpenStack, Pycon India
 

Similar to D2 OPEN SEMINAR - WWDC 핫 이슈

Building Modern Apps using Android Architecture Components
Building Modern Apps using Android Architecture ComponentsBuilding Modern Apps using Android Architecture Components
Building Modern Apps using Android Architecture ComponentsHassan Abid
 
Migrating Objective-C to Swift
Migrating Objective-C to SwiftMigrating Objective-C to Swift
Migrating Objective-C to SwiftElmar Kretzer
 
Update from android kk to android l
Update from android kk to android lUpdate from android kk to android l
Update from android kk to android lBin Yang
 
Jetpack, with new features in 2021 GDG Georgetown IO Extended
Jetpack, with new features in 2021 GDG Georgetown IO ExtendedJetpack, with new features in 2021 GDG Georgetown IO Extended
Jetpack, with new features in 2021 GDG Georgetown IO ExtendedToru Wonyoung Choi
 
Find your own iOS kernel bug
Find your own iOS kernel bugFind your own iOS kernel bug
Find your own iOS kernel bugGustavo Martinez
 
Алексей Демедецкий: How to: RAC, TDD, MVVM
Алексей Демедецкий: How to: RAC, TDD, MVVMАлексей Демедецкий: How to: RAC, TDD, MVVM
Алексей Демедецкий: How to: RAC, TDD, MVVMFwdays
 
You Don't Need Dependency Injection
You Don't Need Dependency InjectionYou Don't Need Dependency Injection
You Don't Need Dependency Injectionintive
 
Cloud nativemicroservices jax-london2020
Cloud nativemicroservices   jax-london2020Cloud nativemicroservices   jax-london2020
Cloud nativemicroservices jax-london2020Emily Jiang
 
Cloud nativemicroservices jax-london2020
Cloud nativemicroservices   jax-london2020Cloud nativemicroservices   jax-london2020
Cloud nativemicroservices jax-london2020Emily Jiang
 
New Features Of Microsoft Visual Studio 2008 And .Net Framework 3.5 To Comsof...
New Features Of Microsoft Visual Studio 2008 And .Net Framework 3.5 To Comsof...New Features Of Microsoft Visual Studio 2008 And .Net Framework 3.5 To Comsof...
New Features Of Microsoft Visual Studio 2008 And .Net Framework 3.5 To Comsof...Shahzad
 
Use Eclipse technologies to build a modern embedded IDE
Use Eclipse technologies to build a modern embedded IDEUse Eclipse technologies to build a modern embedded IDE
Use Eclipse technologies to build a modern embedded IDEBenjamin Cabé
 
Optimize CollectionView Scrolling
Optimize CollectionView ScrollingOptimize CollectionView Scrolling
Optimize CollectionView ScrollingAndrea Prearo
 
Adopting Swift Generics
Adopting Swift GenericsAdopting Swift Generics
Adopting Swift GenericsMax Sokolov
 
Anko & Karamba in Kotlin by Bapusaheb Patil
Anko & Karamba in Kotlin by Bapusaheb PatilAnko & Karamba in Kotlin by Bapusaheb Patil
Anko & Karamba in Kotlin by Bapusaheb PatilBapusaheb Patil
 
The Ring programming language version 1.8 book - Part 77 of 202
The Ring programming language version 1.8 book - Part 77 of 202The Ring programming language version 1.8 book - Part 77 of 202
The Ring programming language version 1.8 book - Part 77 of 202Mahmoud Samir Fayed
 

Similar to D2 OPEN SEMINAR - WWDC 핫 이슈 (20)

Building Modern Apps using Android Architecture Components
Building Modern Apps using Android Architecture ComponentsBuilding Modern Apps using Android Architecture Components
Building Modern Apps using Android Architecture Components
 
IOS Storyboards
IOS StoryboardsIOS Storyboards
IOS Storyboards
 
iOS_Presentation
iOS_PresentationiOS_Presentation
iOS_Presentation
 
Migrating Objective-C to Swift
Migrating Objective-C to SwiftMigrating Objective-C to Swift
Migrating Objective-C to Swift
 
Update from android kk to android l
Update from android kk to android lUpdate from android kk to android l
Update from android kk to android l
 
Jetpack, with new features in 2021 GDG Georgetown IO Extended
Jetpack, with new features in 2021 GDG Georgetown IO ExtendedJetpack, with new features in 2021 GDG Georgetown IO Extended
Jetpack, with new features in 2021 GDG Georgetown IO Extended
 
Find your own iOS kernel bug
Find your own iOS kernel bugFind your own iOS kernel bug
Find your own iOS kernel bug
 
Алексей Демедецкий: How to: RAC, TDD, MVVM
Алексей Демедецкий: How to: RAC, TDD, MVVMАлексей Демедецкий: How to: RAC, TDD, MVVM
Алексей Демедецкий: How to: RAC, TDD, MVVM
 
You don't need DI
You don't need DIYou don't need DI
You don't need DI
 
You Don't Need Dependency Injection
You Don't Need Dependency InjectionYou Don't Need Dependency Injection
You Don't Need Dependency Injection
 
Cloud nativemicroservices jax-london2020
Cloud nativemicroservices   jax-london2020Cloud nativemicroservices   jax-london2020
Cloud nativemicroservices jax-london2020
 
Cloud nativemicroservices jax-london2020
Cloud nativemicroservices   jax-london2020Cloud nativemicroservices   jax-london2020
Cloud nativemicroservices jax-london2020
 
New Features Of Microsoft Visual Studio 2008 And .Net Framework 3.5 To Comsof...
New Features Of Microsoft Visual Studio 2008 And .Net Framework 3.5 To Comsof...New Features Of Microsoft Visual Studio 2008 And .Net Framework 3.5 To Comsof...
New Features Of Microsoft Visual Studio 2008 And .Net Framework 3.5 To Comsof...
 
Stmik bandung
Stmik bandungStmik bandung
Stmik bandung
 
Use Eclipse technologies to build a modern embedded IDE
Use Eclipse technologies to build a modern embedded IDEUse Eclipse technologies to build a modern embedded IDE
Use Eclipse technologies to build a modern embedded IDE
 
Optimize CollectionView Scrolling
Optimize CollectionView ScrollingOptimize CollectionView Scrolling
Optimize CollectionView Scrolling
 
Adopting Swift Generics
Adopting Swift GenericsAdopting Swift Generics
Adopting Swift Generics
 
DataFX - JavaOne 2013
DataFX - JavaOne 2013DataFX - JavaOne 2013
DataFX - JavaOne 2013
 
Anko & Karamba in Kotlin by Bapusaheb Patil
Anko & Karamba in Kotlin by Bapusaheb PatilAnko & Karamba in Kotlin by Bapusaheb Patil
Anko & Karamba in Kotlin by Bapusaheb Patil
 
The Ring programming language version 1.8 book - Part 77 of 202
The Ring programming language version 1.8 book - Part 77 of 202The Ring programming language version 1.8 book - Part 77 of 202
The Ring programming language version 1.8 book - Part 77 of 202
 

More from NAVER D2

[211] 인공지능이 인공지능 챗봇을 만든다
[211] 인공지능이 인공지능 챗봇을 만든다[211] 인공지능이 인공지능 챗봇을 만든다
[211] 인공지능이 인공지능 챗봇을 만든다NAVER D2
 
[233] 대형 컨테이너 클러스터에서의 고가용성 Network Load Balancing: Maglev Hashing Scheduler i...
[233] 대형 컨테이너 클러스터에서의 고가용성 Network Load Balancing: Maglev Hashing Scheduler i...[233] 대형 컨테이너 클러스터에서의 고가용성 Network Load Balancing: Maglev Hashing Scheduler i...
[233] 대형 컨테이너 클러스터에서의 고가용성 Network Load Balancing: Maglev Hashing Scheduler i...NAVER D2
 
[215] Druid로 쉽고 빠르게 데이터 분석하기
[215] Druid로 쉽고 빠르게 데이터 분석하기[215] Druid로 쉽고 빠르게 데이터 분석하기
[215] Druid로 쉽고 빠르게 데이터 분석하기NAVER D2
 
[245]Papago Internals: 모델분석과 응용기술 개발
[245]Papago Internals: 모델분석과 응용기술 개발[245]Papago Internals: 모델분석과 응용기술 개발
[245]Papago Internals: 모델분석과 응용기술 개발NAVER D2
 
[236] 스트림 저장소 최적화 이야기: 아파치 드루이드로부터 얻은 교훈
[236] 스트림 저장소 최적화 이야기: 아파치 드루이드로부터 얻은 교훈[236] 스트림 저장소 최적화 이야기: 아파치 드루이드로부터 얻은 교훈
[236] 스트림 저장소 최적화 이야기: 아파치 드루이드로부터 얻은 교훈NAVER D2
 
[235]Wikipedia-scale Q&A
[235]Wikipedia-scale Q&A[235]Wikipedia-scale Q&A
[235]Wikipedia-scale Q&ANAVER D2
 
[244]로봇이 현실 세계에 대해 학습하도록 만들기
[244]로봇이 현실 세계에 대해 학습하도록 만들기[244]로봇이 현실 세계에 대해 학습하도록 만들기
[244]로봇이 현실 세계에 대해 학습하도록 만들기NAVER D2
 
[243] Deep Learning to help student’s Deep Learning
[243] Deep Learning to help student’s Deep Learning[243] Deep Learning to help student’s Deep Learning
[243] Deep Learning to help student’s Deep LearningNAVER D2
 
[234]Fast & Accurate Data Annotation Pipeline for AI applications
[234]Fast & Accurate Data Annotation Pipeline for AI applications[234]Fast & Accurate Data Annotation Pipeline for AI applications
[234]Fast & Accurate Data Annotation Pipeline for AI applicationsNAVER D2
 
Old version: [233]대형 컨테이너 클러스터에서의 고가용성 Network Load Balancing
Old version: [233]대형 컨테이너 클러스터에서의 고가용성 Network Load BalancingOld version: [233]대형 컨테이너 클러스터에서의 고가용성 Network Load Balancing
Old version: [233]대형 컨테이너 클러스터에서의 고가용성 Network Load BalancingNAVER D2
 
[226]NAVER 광고 deep click prediction: 모델링부터 서빙까지
[226]NAVER 광고 deep click prediction: 모델링부터 서빙까지[226]NAVER 광고 deep click prediction: 모델링부터 서빙까지
[226]NAVER 광고 deep click prediction: 모델링부터 서빙까지NAVER D2
 
[225]NSML: 머신러닝 플랫폼 서비스하기 & 모델 튜닝 자동화하기
[225]NSML: 머신러닝 플랫폼 서비스하기 & 모델 튜닝 자동화하기[225]NSML: 머신러닝 플랫폼 서비스하기 & 모델 튜닝 자동화하기
[225]NSML: 머신러닝 플랫폼 서비스하기 & 모델 튜닝 자동화하기NAVER D2
 
[224]네이버 검색과 개인화
[224]네이버 검색과 개인화[224]네이버 검색과 개인화
[224]네이버 검색과 개인화NAVER D2
 
[216]Search Reliability Engineering (부제: 지진에도 흔들리지 않는 네이버 검색시스템)
[216]Search Reliability Engineering (부제: 지진에도 흔들리지 않는 네이버 검색시스템)[216]Search Reliability Engineering (부제: 지진에도 흔들리지 않는 네이버 검색시스템)
[216]Search Reliability Engineering (부제: 지진에도 흔들리지 않는 네이버 검색시스템)NAVER D2
 
[214] Ai Serving Platform: 하루 수 억 건의 인퍼런스를 처리하기 위한 고군분투기
[214] Ai Serving Platform: 하루 수 억 건의 인퍼런스를 처리하기 위한 고군분투기[214] Ai Serving Platform: 하루 수 억 건의 인퍼런스를 처리하기 위한 고군분투기
[214] Ai Serving Platform: 하루 수 억 건의 인퍼런스를 처리하기 위한 고군분투기NAVER D2
 
[213] Fashion Visual Search
[213] Fashion Visual Search[213] Fashion Visual Search
[213] Fashion Visual SearchNAVER D2
 
[232] TensorRT를 활용한 딥러닝 Inference 최적화
[232] TensorRT를 활용한 딥러닝 Inference 최적화[232] TensorRT를 활용한 딥러닝 Inference 최적화
[232] TensorRT를 활용한 딥러닝 Inference 최적화NAVER D2
 
[242]컴퓨터 비전을 이용한 실내 지도 자동 업데이트 방법: 딥러닝을 통한 POI 변화 탐지
[242]컴퓨터 비전을 이용한 실내 지도 자동 업데이트 방법: 딥러닝을 통한 POI 변화 탐지[242]컴퓨터 비전을 이용한 실내 지도 자동 업데이트 방법: 딥러닝을 통한 POI 변화 탐지
[242]컴퓨터 비전을 이용한 실내 지도 자동 업데이트 방법: 딥러닝을 통한 POI 변화 탐지NAVER D2
 
[212]C3, 데이터 처리에서 서빙까지 가능한 하둡 클러스터
[212]C3, 데이터 처리에서 서빙까지 가능한 하둡 클러스터[212]C3, 데이터 처리에서 서빙까지 가능한 하둡 클러스터
[212]C3, 데이터 처리에서 서빙까지 가능한 하둡 클러스터NAVER D2
 
[223]기계독해 QA: 검색인가, NLP인가?
[223]기계독해 QA: 검색인가, NLP인가?[223]기계독해 QA: 검색인가, NLP인가?
[223]기계독해 QA: 검색인가, NLP인가?NAVER D2
 

More from NAVER D2 (20)

[211] 인공지능이 인공지능 챗봇을 만든다
[211] 인공지능이 인공지능 챗봇을 만든다[211] 인공지능이 인공지능 챗봇을 만든다
[211] 인공지능이 인공지능 챗봇을 만든다
 
[233] 대형 컨테이너 클러스터에서의 고가용성 Network Load Balancing: Maglev Hashing Scheduler i...
[233] 대형 컨테이너 클러스터에서의 고가용성 Network Load Balancing: Maglev Hashing Scheduler i...[233] 대형 컨테이너 클러스터에서의 고가용성 Network Load Balancing: Maglev Hashing Scheduler i...
[233] 대형 컨테이너 클러스터에서의 고가용성 Network Load Balancing: Maglev Hashing Scheduler i...
 
[215] Druid로 쉽고 빠르게 데이터 분석하기
[215] Druid로 쉽고 빠르게 데이터 분석하기[215] Druid로 쉽고 빠르게 데이터 분석하기
[215] Druid로 쉽고 빠르게 데이터 분석하기
 
[245]Papago Internals: 모델분석과 응용기술 개발
[245]Papago Internals: 모델분석과 응용기술 개발[245]Papago Internals: 모델분석과 응용기술 개발
[245]Papago Internals: 모델분석과 응용기술 개발
 
[236] 스트림 저장소 최적화 이야기: 아파치 드루이드로부터 얻은 교훈
[236] 스트림 저장소 최적화 이야기: 아파치 드루이드로부터 얻은 교훈[236] 스트림 저장소 최적화 이야기: 아파치 드루이드로부터 얻은 교훈
[236] 스트림 저장소 최적화 이야기: 아파치 드루이드로부터 얻은 교훈
 
[235]Wikipedia-scale Q&A
[235]Wikipedia-scale Q&A[235]Wikipedia-scale Q&A
[235]Wikipedia-scale Q&A
 
[244]로봇이 현실 세계에 대해 학습하도록 만들기
[244]로봇이 현실 세계에 대해 학습하도록 만들기[244]로봇이 현실 세계에 대해 학습하도록 만들기
[244]로봇이 현실 세계에 대해 학습하도록 만들기
 
[243] Deep Learning to help student’s Deep Learning
[243] Deep Learning to help student’s Deep Learning[243] Deep Learning to help student’s Deep Learning
[243] Deep Learning to help student’s Deep Learning
 
[234]Fast & Accurate Data Annotation Pipeline for AI applications
[234]Fast & Accurate Data Annotation Pipeline for AI applications[234]Fast & Accurate Data Annotation Pipeline for AI applications
[234]Fast & Accurate Data Annotation Pipeline for AI applications
 
Old version: [233]대형 컨테이너 클러스터에서의 고가용성 Network Load Balancing
Old version: [233]대형 컨테이너 클러스터에서의 고가용성 Network Load BalancingOld version: [233]대형 컨테이너 클러스터에서의 고가용성 Network Load Balancing
Old version: [233]대형 컨테이너 클러스터에서의 고가용성 Network Load Balancing
 
[226]NAVER 광고 deep click prediction: 모델링부터 서빙까지
[226]NAVER 광고 deep click prediction: 모델링부터 서빙까지[226]NAVER 광고 deep click prediction: 모델링부터 서빙까지
[226]NAVER 광고 deep click prediction: 모델링부터 서빙까지
 
[225]NSML: 머신러닝 플랫폼 서비스하기 & 모델 튜닝 자동화하기
[225]NSML: 머신러닝 플랫폼 서비스하기 & 모델 튜닝 자동화하기[225]NSML: 머신러닝 플랫폼 서비스하기 & 모델 튜닝 자동화하기
[225]NSML: 머신러닝 플랫폼 서비스하기 & 모델 튜닝 자동화하기
 
[224]네이버 검색과 개인화
[224]네이버 검색과 개인화[224]네이버 검색과 개인화
[224]네이버 검색과 개인화
 
[216]Search Reliability Engineering (부제: 지진에도 흔들리지 않는 네이버 검색시스템)
[216]Search Reliability Engineering (부제: 지진에도 흔들리지 않는 네이버 검색시스템)[216]Search Reliability Engineering (부제: 지진에도 흔들리지 않는 네이버 검색시스템)
[216]Search Reliability Engineering (부제: 지진에도 흔들리지 않는 네이버 검색시스템)
 
[214] Ai Serving Platform: 하루 수 억 건의 인퍼런스를 처리하기 위한 고군분투기
[214] Ai Serving Platform: 하루 수 억 건의 인퍼런스를 처리하기 위한 고군분투기[214] Ai Serving Platform: 하루 수 억 건의 인퍼런스를 처리하기 위한 고군분투기
[214] Ai Serving Platform: 하루 수 억 건의 인퍼런스를 처리하기 위한 고군분투기
 
[213] Fashion Visual Search
[213] Fashion Visual Search[213] Fashion Visual Search
[213] Fashion Visual Search
 
[232] TensorRT를 활용한 딥러닝 Inference 최적화
[232] TensorRT를 활용한 딥러닝 Inference 최적화[232] TensorRT를 활용한 딥러닝 Inference 최적화
[232] TensorRT를 활용한 딥러닝 Inference 최적화
 
[242]컴퓨터 비전을 이용한 실내 지도 자동 업데이트 방법: 딥러닝을 통한 POI 변화 탐지
[242]컴퓨터 비전을 이용한 실내 지도 자동 업데이트 방법: 딥러닝을 통한 POI 변화 탐지[242]컴퓨터 비전을 이용한 실내 지도 자동 업데이트 방법: 딥러닝을 통한 POI 변화 탐지
[242]컴퓨터 비전을 이용한 실내 지도 자동 업데이트 방법: 딥러닝을 통한 POI 변화 탐지
 
[212]C3, 데이터 처리에서 서빙까지 가능한 하둡 클러스터
[212]C3, 데이터 처리에서 서빙까지 가능한 하둡 클러스터[212]C3, 데이터 처리에서 서빙까지 가능한 하둡 클러스터
[212]C3, 데이터 처리에서 서빙까지 가능한 하둡 클러스터
 
[223]기계독해 QA: 검색인가, NLP인가?
[223]기계독해 QA: 검색인가, NLP인가?[223]기계독해 QA: 검색인가, NLP인가?
[223]기계독해 QA: 검색인가, NLP인가?
 

Recently uploaded

Beyond Boundaries: Leveraging No-Code Solutions for Industry Innovation
Beyond Boundaries: Leveraging No-Code Solutions for Industry InnovationBeyond Boundaries: Leveraging No-Code Solutions for Industry Innovation
Beyond Boundaries: Leveraging No-Code Solutions for Industry InnovationSafe Software
 
Injustice - Developers Among Us (SciFiDevCon 2024)
Injustice - Developers Among Us (SciFiDevCon 2024)Injustice - Developers Among Us (SciFiDevCon 2024)
Injustice - Developers Among Us (SciFiDevCon 2024)Allon Mureinik
 
WhatsApp 9892124323 ✓Call Girls In Kalyan ( Mumbai ) secure service
WhatsApp 9892124323 ✓Call Girls In Kalyan ( Mumbai ) secure serviceWhatsApp 9892124323 ✓Call Girls In Kalyan ( Mumbai ) secure service
WhatsApp 9892124323 ✓Call Girls In Kalyan ( Mumbai ) secure servicePooja Nehwal
 
Pigging Solutions Piggable Sweeping Elbows
Pigging Solutions Piggable Sweeping ElbowsPigging Solutions Piggable Sweeping Elbows
Pigging Solutions Piggable Sweeping ElbowsPigging Solutions
 
The Codex of Business Writing Software for Real-World Solutions 2.pptx
The Codex of Business Writing Software for Real-World Solutions 2.pptxThe Codex of Business Writing Software for Real-World Solutions 2.pptx
The Codex of Business Writing Software for Real-World Solutions 2.pptxMalak Abu Hammad
 
SQL Database Design For Developers at php[tek] 2024
SQL Database Design For Developers at php[tek] 2024SQL Database Design For Developers at php[tek] 2024
SQL Database Design For Developers at php[tek] 2024Scott Keck-Warren
 
Swan(sea) Song – personal research during my six years at Swansea ... and bey...
Swan(sea) Song – personal research during my six years at Swansea ... and bey...Swan(sea) Song – personal research during my six years at Swansea ... and bey...
Swan(sea) Song – personal research during my six years at Swansea ... and bey...Alan Dix
 
Slack Application Development 101 Slides
Slack Application Development 101 SlidesSlack Application Development 101 Slides
Slack Application Development 101 Slidespraypatel2
 
Enhancing Worker Digital Experience: A Hands-on Workshop for Partners
Enhancing Worker Digital Experience: A Hands-on Workshop for PartnersEnhancing Worker Digital Experience: A Hands-on Workshop for Partners
Enhancing Worker Digital Experience: A Hands-on Workshop for PartnersThousandEyes
 
#StandardsGoals for 2024: What’s new for BISAC - Tech Forum 2024
#StandardsGoals for 2024: What’s new for BISAC - Tech Forum 2024#StandardsGoals for 2024: What’s new for BISAC - Tech Forum 2024
#StandardsGoals for 2024: What’s new for BISAC - Tech Forum 2024BookNet Canada
 
Neo4j - How KGs are shaping the future of Generative AI at AWS Summit London ...
Neo4j - How KGs are shaping the future of Generative AI at AWS Summit London ...Neo4j - How KGs are shaping the future of Generative AI at AWS Summit London ...
Neo4j - How KGs are shaping the future of Generative AI at AWS Summit London ...Neo4j
 
Automating Business Process via MuleSoft Composer | Bangalore MuleSoft Meetup...
Automating Business Process via MuleSoft Composer | Bangalore MuleSoft Meetup...Automating Business Process via MuleSoft Composer | Bangalore MuleSoft Meetup...
Automating Business Process via MuleSoft Composer | Bangalore MuleSoft Meetup...shyamraj55
 
FULL ENJOY 🔝 8264348440 🔝 Call Girls in Diplomatic Enclave | Delhi
FULL ENJOY 🔝 8264348440 🔝 Call Girls in Diplomatic Enclave | DelhiFULL ENJOY 🔝 8264348440 🔝 Call Girls in Diplomatic Enclave | Delhi
FULL ENJOY 🔝 8264348440 🔝 Call Girls in Diplomatic Enclave | Delhisoniya singh
 
Azure Monitor & Application Insight to monitor Infrastructure & Application
Azure Monitor & Application Insight to monitor Infrastructure & ApplicationAzure Monitor & Application Insight to monitor Infrastructure & Application
Azure Monitor & Application Insight to monitor Infrastructure & ApplicationAndikSusilo4
 
08448380779 Call Girls In Diplomatic Enclave Women Seeking Men
08448380779 Call Girls In Diplomatic Enclave Women Seeking Men08448380779 Call Girls In Diplomatic Enclave Women Seeking Men
08448380779 Call Girls In Diplomatic Enclave Women Seeking MenDelhi Call girls
 
08448380779 Call Girls In Civil Lines Women Seeking Men
08448380779 Call Girls In Civil Lines Women Seeking Men08448380779 Call Girls In Civil Lines Women Seeking Men
08448380779 Call Girls In Civil Lines Women Seeking MenDelhi Call girls
 
SIEMENS: RAPUNZEL – A Tale About Knowledge Graph
SIEMENS: RAPUNZEL – A Tale About Knowledge GraphSIEMENS: RAPUNZEL – A Tale About Knowledge Graph
SIEMENS: RAPUNZEL – A Tale About Knowledge GraphNeo4j
 
Maximizing Board Effectiveness 2024 Webinar.pptx
Maximizing Board Effectiveness 2024 Webinar.pptxMaximizing Board Effectiveness 2024 Webinar.pptx
Maximizing Board Effectiveness 2024 Webinar.pptxOnBoard
 

Recently uploaded (20)

E-Vehicle_Hacking_by_Parul Sharma_null_owasp.pptx
E-Vehicle_Hacking_by_Parul Sharma_null_owasp.pptxE-Vehicle_Hacking_by_Parul Sharma_null_owasp.pptx
E-Vehicle_Hacking_by_Parul Sharma_null_owasp.pptx
 
Beyond Boundaries: Leveraging No-Code Solutions for Industry Innovation
Beyond Boundaries: Leveraging No-Code Solutions for Industry InnovationBeyond Boundaries: Leveraging No-Code Solutions for Industry Innovation
Beyond Boundaries: Leveraging No-Code Solutions for Industry Innovation
 
Injustice - Developers Among Us (SciFiDevCon 2024)
Injustice - Developers Among Us (SciFiDevCon 2024)Injustice - Developers Among Us (SciFiDevCon 2024)
Injustice - Developers Among Us (SciFiDevCon 2024)
 
WhatsApp 9892124323 ✓Call Girls In Kalyan ( Mumbai ) secure service
WhatsApp 9892124323 ✓Call Girls In Kalyan ( Mumbai ) secure serviceWhatsApp 9892124323 ✓Call Girls In Kalyan ( Mumbai ) secure service
WhatsApp 9892124323 ✓Call Girls In Kalyan ( Mumbai ) secure service
 
Pigging Solutions Piggable Sweeping Elbows
Pigging Solutions Piggable Sweeping ElbowsPigging Solutions Piggable Sweeping Elbows
Pigging Solutions Piggable Sweeping Elbows
 
Vulnerability_Management_GRC_by Sohang Sengupta.pptx
Vulnerability_Management_GRC_by Sohang Sengupta.pptxVulnerability_Management_GRC_by Sohang Sengupta.pptx
Vulnerability_Management_GRC_by Sohang Sengupta.pptx
 
The Codex of Business Writing Software for Real-World Solutions 2.pptx
The Codex of Business Writing Software for Real-World Solutions 2.pptxThe Codex of Business Writing Software for Real-World Solutions 2.pptx
The Codex of Business Writing Software for Real-World Solutions 2.pptx
 
SQL Database Design For Developers at php[tek] 2024
SQL Database Design For Developers at php[tek] 2024SQL Database Design For Developers at php[tek] 2024
SQL Database Design For Developers at php[tek] 2024
 
Swan(sea) Song – personal research during my six years at Swansea ... and bey...
Swan(sea) Song – personal research during my six years at Swansea ... and bey...Swan(sea) Song – personal research during my six years at Swansea ... and bey...
Swan(sea) Song – personal research during my six years at Swansea ... and bey...
 
Slack Application Development 101 Slides
Slack Application Development 101 SlidesSlack Application Development 101 Slides
Slack Application Development 101 Slides
 
Enhancing Worker Digital Experience: A Hands-on Workshop for Partners
Enhancing Worker Digital Experience: A Hands-on Workshop for PartnersEnhancing Worker Digital Experience: A Hands-on Workshop for Partners
Enhancing Worker Digital Experience: A Hands-on Workshop for Partners
 
#StandardsGoals for 2024: What’s new for BISAC - Tech Forum 2024
#StandardsGoals for 2024: What’s new for BISAC - Tech Forum 2024#StandardsGoals for 2024: What’s new for BISAC - Tech Forum 2024
#StandardsGoals for 2024: What’s new for BISAC - Tech Forum 2024
 
Neo4j - How KGs are shaping the future of Generative AI at AWS Summit London ...
Neo4j - How KGs are shaping the future of Generative AI at AWS Summit London ...Neo4j - How KGs are shaping the future of Generative AI at AWS Summit London ...
Neo4j - How KGs are shaping the future of Generative AI at AWS Summit London ...
 
Automating Business Process via MuleSoft Composer | Bangalore MuleSoft Meetup...
Automating Business Process via MuleSoft Composer | Bangalore MuleSoft Meetup...Automating Business Process via MuleSoft Composer | Bangalore MuleSoft Meetup...
Automating Business Process via MuleSoft Composer | Bangalore MuleSoft Meetup...
 
FULL ENJOY 🔝 8264348440 🔝 Call Girls in Diplomatic Enclave | Delhi
FULL ENJOY 🔝 8264348440 🔝 Call Girls in Diplomatic Enclave | DelhiFULL ENJOY 🔝 8264348440 🔝 Call Girls in Diplomatic Enclave | Delhi
FULL ENJOY 🔝 8264348440 🔝 Call Girls in Diplomatic Enclave | Delhi
 
Azure Monitor & Application Insight to monitor Infrastructure & Application
Azure Monitor & Application Insight to monitor Infrastructure & ApplicationAzure Monitor & Application Insight to monitor Infrastructure & Application
Azure Monitor & Application Insight to monitor Infrastructure & Application
 
08448380779 Call Girls In Diplomatic Enclave Women Seeking Men
08448380779 Call Girls In Diplomatic Enclave Women Seeking Men08448380779 Call Girls In Diplomatic Enclave Women Seeking Men
08448380779 Call Girls In Diplomatic Enclave Women Seeking Men
 
08448380779 Call Girls In Civil Lines Women Seeking Men
08448380779 Call Girls In Civil Lines Women Seeking Men08448380779 Call Girls In Civil Lines Women Seeking Men
08448380779 Call Girls In Civil Lines Women Seeking Men
 
SIEMENS: RAPUNZEL – A Tale About Knowledge Graph
SIEMENS: RAPUNZEL – A Tale About Knowledge GraphSIEMENS: RAPUNZEL – A Tale About Knowledge Graph
SIEMENS: RAPUNZEL – A Tale About Knowledge Graph
 
Maximizing Board Effectiveness 2024 Webinar.pptx
Maximizing Board Effectiveness 2024 Webinar.pptxMaximizing Board Effectiveness 2024 Webinar.pptx
Maximizing Board Effectiveness 2024 Webinar.pptx
 

D2 OPEN SEMINAR - WWDC 핫 이슈

Editor's Notes

  1. 현재는 G-LINK라는 프로젝트 팀에 소속되어 NaverCafe SDK 를 개발하고 있습니다. 네이버카페SDK을 아시거나 사용해 보신분 계실까요? 게임관련 일을 하지 않으신다면 생소하실 수 있는데요, 쉽게 얘기하면 모바일 게임안에 카페를 네이티브로 붙일 수 있는 라이브러리입니다.
  2. 이번 WWDC 16에서도 UIKit framework에 많은 개선사항을 발표했습니다. 먼저 변경된 내용의 리스트를 간단히 살펴보겠습니다.
  3. UIPreviewInteraction, UIPreviewInteractionDelegate 로 peek and pop UI를 커스텀하게 제공할 수 있게 되었습니다. 꽤 큰 결정이었을 것 같은데, 강연자도 역시 큰 딜이었다고 얘기했습니다. Peak at 3dTouch session에서 더 자세히 설명하고 있습니다.
  4. 탭바 뱃지를 커스텀 할 수 있습니다. 백그라운드 색상, 텍스트 속성이죠 그리고 unselected Tint Color를 커스텀할 수 있네요. 이미 탭바 자체를 새로 만들어 쓰는 곳이 많지 않나요?
  5. UIKit 변화 중에서 애니메이션관련해서 변화가 매우 큰것 같습니다. 관련 클래스와 프로토콜이 많이 생겼는데요, 클래스들 이름에서 유추 할 수있는 것들도 보이는데요, 중단할 수 있고, 문지를 수 있고, 되돌릴 수 있습니다. 그리고 애니메이션 타이밍 관련해서 풍성해진 것 같습니다. Uikit animation and transition 세션에서 자세히 설명하고 있습니다.
  6. uipasteboard가 universal clipboard를 지원합니다 물론 localOnly로 세팅할 수도 있습니다. pasteboard 내용을 세팅할 내용을 미리 확인 할 수 있게 되었고, expire date를 세팅할 수 있습니다.
  7. openURL이 디프리케이티드되고 새로운 openURL이 생겼습니다. 비동기로 동작하고 완료시 completionHandler를 메인쓰레드로 반환합니다. 무지 반갑네요.
  8. UICloudSharingController 클래스와 UICloudSharingControllerDelegate 프로토콜이 생겼습니다. what’s new with CloudKit 세션에서 자세히 설명하고 있습니다.
  9. UIAccessibilityCustomRotor 클래스가 추가되었습니다.
  10. UIFont에 새로운 메소드가 추가되었습니다. preferredFontForTextStyle:compatibleWithTraitCollection: 라벨과 텍스트필드, text area에 다이나믹 타입을 제공할 수 있습니다.
  11. UICollectionview 스크롤성능 개선, 새로운 프로토콜 추가가 되었습니다. UIKit에 발표된 내용중에 UICollectionView, UITableView에 관련된 내용을 조금 자세히 말씀드리고 싶습니다. 가장 많이 사용하는 클래스이고 라이프 사이클이 변경되었기 때문에 기존 로직으로 문제가 없는지 한번 들여다 볼 필요가 있다고 생각되었습니다.
  12. 219 세션이었구요. 주된 내용은 UICollectionVIew, UITableView 스크롤링 성능에 관련된 내용입니다. 발표자들은 데모를 통해 셀을 더불러오지 않는 정도의 스크롤링 성능은 괜찮지만, 더보기 스크롤시 성능에 문제가 있음을 보여주며, 그에 따른 개선사항을 얘기하고 있습니다.
  13. UICollectionView 에서 스크롤 성능 개선을 위해 크게 두가지가 변화가 있습니다. 첫째는 cell 라이프사이클이 변경되었습니다. 변경사항은 ios sdk 10 컴파일시 ios10에서 자동으로 적용되지만 변경된 라이프사이클에 따라 로직 이동을 해야할 수 있을 것 같구요.
  14. 둘째로 오랫동안 유지되었던 dataSource, delegate 두개의 프로토콜에 세번째 프로토콜 dataSourcePreFetching이 추가되었습니다. 첫번째 변경사항은 ios sdk 10 컴파일시 ios10에서 자동으로 적용되지만 변경된 라이프사이클에 따라 로직 이동을 해야할 수 있을 것 같구요. 두번째 추가사항은 적용하면 눈에 띄게 성능 올릴 수 있을 것으로 보이니 바로 적용하는것이 좋을 것 같습니다. 다른 큰 주제를 얘기하지 않고 이 주제를 선택한 이유 역시 전달받고 바로 적용해야 하는 내용이라고 판단했기 때문입니다.
  15. 기타 변경사항으로 auto cellsize, scrollview에 uirefreshcontrol 직접 추가 interactive reordering에 paging을 지원하는 내용입니다.
  16.  먼저 ios9 셀 라이프 사이클을 살펴보겠습니다. prepareForReuse : 셀을 큐에서 꺼내는 동시에 호출된다. 셀을 기본상태로 리셋하여 새로운 데이터를 세팅할 수 있도록 준비하는데 사용한다.
  17. cellForItemAtIndexPath : 셀에 내용을 표시하기 위해 가장 많은 일을 하는 곳이다. 데이터 모델에 접근에서 셀에 세팅하고 시스템에 리턴한다.
  18. willDisplayCell : 화면에 보여지기 전에 마지막으로 내용을 채울 수 있는 곳이다. cellforitematindexpath에서 셀이 시스템으로 리턴되면 호출된다.
  19. didEndDisplayingCell : 화면에서 사라지면 호출되며 reuse queue로 들어가 재사용되길 기다린다. 이것이 그동안 알고 있던 9에서의 셀 라이프 사이클인데, 10에서 어떤 변화가 있는지 알아보겠습니다.
  20. Ios10 에서 어떤 변화가 있는지 볼까요. prepareForReuse, cellForItemAtIndexPath : ios9과 비슷한 패턴으로 호출되어 셀에 컨텐츠를 채운다.
  21. willDisplayCell : 호출되는 시점이 변경되어 iOS9과 다르게 셀이 만들어졌을때 호출되지 않고 조금 늦게 호출된다.
  22. willDisplayCell : 조금 늦게 호출된다는 강연자의 말을 이해하기 위해 iOS 10 beta에서 로그를 찍어보았는데요, iOS9에서는 cell이 시스템이 리턴되자마자 바로 호출되는 반면 10에서는 시스템에 리턴되고 스크롤이 조금더 진행되어 셀이 화면에 나타나기 바로 직전에 호출됩니다. 말 그대로 조금 늦게 호출되네요
  23. didEndDisplayingCell : iOS9에서는 이 포인트에 reuse queue에 들어가지만, 그렇게 되면 해당 셀을 화면에 나타나게 하려면 당연히 셀 라이프 사이클을 시작해야하겠죠. iOS10 에서는 didEndDisplayingCell이 호출되어도 reuse queue에 넣지 않고 조금 잡아둔다. said “IOS 10 we're going to hold on that selves a little bit longer”
  24. didEndDisplayingCell: 더 잡아둔다는 강연자 말을 이해하려고 didEndDisplayingCell이 호출된 시점에 스크롤 방향이 바꾸어 셀을 화면에 다시 나타나게 하면 ios9처럼 cellforitematindexpath를 시작으로 라이프 사이클이 시작되지 않고 willDisplayCell이 바로 호출되는 것을 확인할 수 있습니다. 강연자가 얘기한대로 end시점에 바로 reuseQueue로 들어가지 않았습니다. 테스트 결과 reusequeue에 들어가는 스크롤 시점이 있는 것 같습니다. (didend 호출되고 willdis가 바로 호출 될 수 있으니 경우에따라 주의해야 할 것 같습니다.)
  25. 새로운 라이프 사이클에 알아야할 내용들을 세가지 소개했습니다. 무거운 작업은 cellForItemAtIndexPath에서 하고(현재도 대부분 그렇게 하고 있죠) 가벼운 작업은 willDisplayCell / didEndDisplayingCell에서 합니다. 마지막으로 중요한 것은 cellForItemAtIndexPath로 준비된 셀이 사용자 스크롤에 따라 보여지지 않을 수도 있습니다. 마지막이 중요하다고 한 이유를 저는 이렇게 생각합니다. 보여지지 않을 수 있기 때문에 내용을 표시하는 비용을 cellforitematindexpath에 사용하는게 효율적이지 못하다는 생각입니다. 내용을 표시하는 로직은 willdisplaycell에서 하고 데이터를 가져와서 가공하는 일을 cellforitematindexpath에서 하는게 바람직해 보입니다.
  26. 변화된 라이프 사이클에 따라 약간의 로직 이동이 있을 수 있지만, ios10 컴파일하면 자동으로 적용 되는 내용이었습니다. 스크롤 성능을 위한 한가지 변화가 더 있는데요, 그얘기를 하기 전에 비싼 비용의 데이터 모델에 대해 얘기합니다. 성능의 문제는 많은 셀들이 만들어지기 위해 이미지, dB, core data 등의 비싼 데이터 모델에 접근하는 것입니다.
  27. 이 문제를 해결을 돕기 위해 새로운 protocol을 소개했습니다. collectionview 가 소개된 이후에 DataSource, Delegate 두개의 protocol을 가지고 있었는데요, 3번째 preFetchDataSource protocol을 추가했습니다. 사용하지 않아도 되는 옵셔널 protocol이구요, 한개의 필수 함수와 한개의 옵셔널 함수를 가지고 있습니다. preFetchItemsAtIndexPaths 는 스크롤되는 방향의 indexpath를 array로 주고 있고 cancelPreFetchingForItemsAtIndexPaths는 스크롤 방향이 변경되면 preFetchItemsAtIndexPaths로 알려주었던 indexPaths를 다시 취소 되었다고 알려주는 역할을 합니다. 강연자가 마지막으로 기존에 기존에 구현되어 있는 비동기 데이터 접근 모델을 대체하는 역할이 아니라고 강조하고 있습니다. 추가 힌트정도로 사용해야한다고 얘기합니다. 일반적인 앱에서 사용자가 가장 많이 사용하는 부분이 리스트형 게시물일텐데요, 더보기 기능 향상을 위해 많은 노력을 합니다. 저희도 더보기 미리하는 로직을 만들어서 사용중인데, 애플에서 prefetching을 내놓았으니 더 쉽게 구현 할 수 있을것 같습니다. prefetching로 오는 indexpath 중 서버로 부터 가져오지 않은 데이터는 미리 땡겨놓는거죠.
  28. Pre fetching API 팁입니다. GCD, NSOprationQueue를 사용해서 백그라운드큐에서 작업하면 메인쓰레드에 영향을 덜주게 되어 성능에 도움을 준다고 하네요, prefetching은 adaptive 기술이라는 것을 기억하라는 얘기를 하고 있으며, 마지막으로 사용자 초점에 적용하는 cancel prefetching을 사용하라고 하죠, 즉 스크롤 방향으로 prefetching 콜백을 주지만 사용자의 스크롤 방향이 바뀌면 다시 해당 indexpath에 대해 cancel prefetching 콜백을 던져줍니다. 옵셔널 프로토콜이지만 prefetching을 통해 준비했던 내용중 취소 할 수 있는 여지가 생겼습니다.
  29. UITableView에도 정확히 같은 API가 추가되었습니다. 당연히 그래야죠,
  30. 스크롤 성능 얘기는 모두 끝났구요 세가지 추가 기능에 대해 말씀 드리겠습니다. Automatic Self-Sizing Cells Estimate Interactive reordering - with paging support UIRefreshControl 직접지원
  31. 지금까지 셀의 실제 사이즈를 얻는데 세가지 방법이 있었죠 autolayout, sizeThatFits(), preferredLayoutAttributesFittingAttributes() 대부분 autoLayout을 사용했을 거라고 얘기하고 있구요, 두가지 메커니즘을 사용해서 직접 구현 할 수 있습니다. 하지만 경우에 따라서 사이즈를 추측하기가 어렵습니다.
  32. 그래서 해주기로 했나봅니다. ios10의 flowlayout에서 실제 사이즈를 자동으로 계산해 주는 옵션이 생겼습니다.
  33. 인터렉티브 리오더링 기능으로 collectionview에서 셀 이동시 위치변환/크기변환등을 해주었는데, 이번에 페이징 까지 지원하게 되었습니다. 쉽게 얘기하면 컬렉션 뷰에서 리오더링과 페이징 기능을 사용하면 아이폰 홈화면에 아이콘 이동하는 것을 경험할 수 있습니다. 현재 페이지에서 셀 위치 전환이되고, 상용자 터치가 가장자리로 가면 다음 페이지로 넘어가는거죠.
  34. 이제 Uirefreshcontrol 직접 지원합니다. 자세히 살펴보면 UIRefreshControlHosting 이라는 프로토콜이 추가되었구요 이 프로토콜에 UIRefreshControl 클래스가 프로퍼티로 존재하고 UICollectionview, uitableview, uiscrollview에서 구현하고 있습니다. 아주 쉽게 붙여 사용할 수 있게 되었습니다. 강연자가 이부분에서 매우 흥분하던데요;