potatotips#55 참가 보고서(iOS)
14600 단어 SwiftpotatotipsiOS
iOS 발표 내용을 요약했습니다.
https://github.com/potatotips/potatotips/wiki/potatotips-55
나는 지식이 부족하다
이 가능하다, ~할 수 있다,...
지적할 점이 있으면 알려주세요
iOS 11 이후 UI V i e w C on t r o ller Transition Coordinator로 제작된 애니메이션이 처음 재생되는 경우에만 작동하지 않는 문제
발표자
kazuhiro4949선생님
슬라이드 쇼
참고 자료
https://qiita.com/kazuhiro4949/items/e8df2a904cb994ce6ecc
https://github.com/kazuhiro4949/UIViewControllerTransitionCoordinatorBug
개요
UIViewControllerTransitionCoordinator
사용자 정의 점프 부분을 쓰지 않아도 애니메이션이 잘 이루어져 편리하다.
그런데 iOS 11 이후에 이상한 행동을 발견했어요.
애니메이션 화면 변환은 시작 후 첫 번째 변환에서 애니메이션 후의 상태를 먼저 표시합니다.
사실은 iOS의 구린내 나는 벌레야.
해결책
처리를 고스란히 사용자 정의 다이빙으로 옮겨 진행하면 문제가 없을 것이다.
Embedded Unity
발표자
tanakasan2525선생님
슬라이드 쇼
참고 자료
개요
UI(Unity)
로컬 UI가 아닌 자체 UI로 구현됩니다.
Unity UI를 로컬 UI에 포함시키는 것은 매우 어렵다
로컬 애플리케이션에 Unity 포함
Unity iOS 구축 프로세스
1. C#의 코드를 C#의 컴파일러를 통해 관리 조립하기
2. 최적화
3. IL2CPP를 통해 C++ 코드로 변환
4. Clang에서 iOS에 구축할 바이너리
이렇게 하면 유닛의 뷰를 끌어올리기만 하면 좋아하는 곳에 유닛의 화면을 띄울 수 있다
Embeded framework 만들기
Unity에서 생성된 Xcode용 항목입니다.mm 하우스.h 파일은 기본적으로 모두 복사되어 있습니다(Unity의 구조를 잘 모릅니다...)
발표자
tanakasan2525선생님
슬라이드 쇼
참고 자료
개요
UI(Unity)
로컬 UI가 아닌 자체 UI로 구현됩니다.
Unity UI를 로컬 UI에 포함시키는 것은 매우 어렵다
로컬 애플리케이션에 Unity 포함
Unity iOS 구축 프로세스
1. C#의 코드를 C#의 컴파일러를 통해 관리 조립하기
2. 최적화
3. IL2CPP를 통해 C++ 코드로 변환
4. Clang에서 iOS에 구축할 바이너리
이렇게 하면 유닛의 뷰를 끌어올리기만 하면 좋아하는 곳에 유닛의 화면을 띄울 수 있다
Embeded framework 만들기
Unity에서 생성된 Xcode용 항목입니다.mm 하우스.h 파일은 기본적으로 모두 복사되어 있습니다(Unity의 구조를 잘 모릅니다...)
iOS 및 Unity 대화
UnitySendMessage를 사용하여 Unity에 데이터 전송
http://kan-kikuchi.hatenablog.com/entry/Safety_UnitySendMessage
iOS에 대한 HTTP 캐시 정보
발표자
jpmartha_jp선생님
슬라이드 쇼
개요
API의 응답에 업데이트 내용이 즉시 반영되지 않아 iOS 측이 의혹을 받고 있다.
나는 그곳에서 현금에 관한 많은 물건을 조사했다.
전제: 캐시는 성능을 향상시키는 데 필수적이다
iOS를 사용하지 않고 캐시를 읽는 방법
CachePolicy 변경
let configuration = URLSessionConfiguration.default
configuration.requestCachePolicy = .reloadIgnoringLocalAndRemoteCacheData
※ 사실은.r e l oa d I g o r i ngLocal AndRemoteCacheData가 지원되지 않음
https://developer.apple.com/documentation/foundation/nsurlrequest/cachepolicy/reloadignoringlocalandremotecachedata
Cache Policy 설정만 캐시를 읽을 수 없습니다.💾보존💾
시뮬레이터로 저장 위치를 확인한 후
/Library/Developer/CoreSimulator/Devices/xxx/data/Containers/Data/Application/xxx/Library/Caches/(BundleID)
라고 캐치했다.db를 만났어요.
내용은 SQLite이며 도구로 볼 수 있습니다.
하지만 읽지 않으면 되지 않겠는가?
->좋지 않은 개인정보 등이 누락되면 저장하지 말아야 한다
대책으로 캐피티를 0으로 만드는 방법이 있는데 현금을 사용할 수 없을 것 같아요.
불러오지도 저장하지도 않는 방법
url Cache를 nil로 만들어주세요.let configuration = URLSessionConfiguration.default
configuration.urlCache = nil
ephemeral 사용let configuration = URLSessionConfiguration.ephemeral
let session = URlSession(configuration: configuration)
하지만 기존의 캐시가 아직 있기 때문에 삭제하는 방법을 찾아봤습니다.
모든 캐시를 제거하는 방법(특정 캐시를 제거하는 방법은 성공하지 못함)
URLCache.shared.removeAllCachedResponses()
Pococha에서 자산 관리
발표자
noppe선생님
슬라이드 쇼
참고 자료
https://github.com/noppefoxwolf/inaba
https://github.com/noppefoxwolf/AppIconGen
개요
이번에 발표된 자산에는 코드가 포함되지 않았다.
이미지, 색상, Storyboard 등.
Pococha 자산 관리 규칙
1. Asset Literal 사용 안 함
Xcode에서는 비슷한 이미지와 색상을 구별하기 어렵습니다.
-> 이름을 붙여서 부르는 게 좋겠어요.
->머리에 외모와 특징에 따라 지정할 수 있는 이름+공통적으로 사용할 수 있는 이름
->xcassets의 이름 공간을 활용하여 간단한 파일 이름으로 접근할 수 있음(Profile Edit/Triangle/Large 등)
2. 문자열에서 에셋을 사용하지 않음
Typo면 점심시간에 붕괴될 거야.
->R.swift 및 Swift Gen 등을 컴파일할 때 Type 확인
3. Interface Builder에서 이미지를 설정하지 않음
존재하지 않는 그림을 설정해도 실행 시간에 붕괴될 수 있습니다.
-> IB에서 설정하지 않은 규칙 설정
->Inaba에서 확인(상기 참고자료 참조)
IB에서 이미지를 제거하면 AutoLayout이 망가져요.
-> Intrinsic conntent size 설정
4. 애플리케이션은 단일 소스에서 생성됨
Victor pdf에서 래스터 이미지를 구성할 때 Apria Icon이 자동으로 생성되지 않는 이유
->AppIconGen의 활용
5. 가상 자산의 명확한 프로젝트 관리
디버깅용 자산은 숨기기 어렵다.앱에 묶으면 다양한 문제가 발생할 수 있다.
-> 각 기능에 대한 대상 만들기, 각 대상에 대한 xcassets 만들기
How to use Dictionary.compactMapValues
발표자
d_date선생님
슬라이드 쇼
참고 자료
https://github.com/apple/swift-evolution/blob/master/proposals/0218-introduce-compact-map-values.md
https://speakerdeck.com/d_date/make-our-swift-better
개요
Dictionary.Swift5에서 commpactMapValues 가져오기(작성자는 발표자 d date)
어떻게 사용합니까?
let d1 = ["a","1","b","2","c",nil]
d1.filter({ $0.value != nil}).mapValues({ $0! })
// ["b":"2","a":"1"](順番は任意)
이렇게↓let d1 = ["a":"1","b":"2","c":nil]
d1.compactMapValues({ $0 })
// ["b":"2","a":"1"](順番は任意)
Javascript의lodash의omitBy를 참고했습니다.
https://lodash.com/
http://tacamy.hatenablog.com/entry/2018/03/04/005938
어떻게 사용합니까?2
let d = ["a":"1","b":"2","c":"three"]
d.mapValues(Int.init).filter({ $0.value != nil}).mapValues({ $0! })
// ["b":2,"a":1](順番は任意)
이렇게↓let d = ["a":"1","b":"2","c":"three"]
d.compactMapValues(Int.init)
// ["b":2,"a":1](順番は任意)
Swift 관리 방법은 다음을 참조하십시오.
Continuous Delivery With Unity Command line arguments
발표자
DayBySay선생님
슬라이드 쇼
개요
유닛 개발 중이시면...
'공유 프로그램의 최신 버전'을 원하시는 분도 계세요.
HockyApp을 통해 업로드합니다.
유니티 빌딩
시간이 오래 걸리다.
그리고 업로드 과정에서 Unity Editor가 닿을 수 없습니다!!!
Xcode 구축
1~2분 더 걸려요.
비극적
내가 설정을 잘못했어...
->다시 유니티 빌딩에서
따라서 Unity 구축 배포 자동화
이번에는 사내 서버 구축기 + Jenkins로 구성되었습니다.
Unity Player -> Xcode.proj의 토출
Unity Command Line Arguments 사용
-executeMethod
빌드 시작 전(Unity 시작 시) 클립 처리
명령행 매개변수 적용하기
Xcode.proj 설정 변경
fastlane은 상황에 따라 사용할 수 없습니다.
[PostProcessBuild]
Player 구축 후 협착 처리
AVPlayer 주변 설계 tips
발표자
toshi0383선생님
슬라이드 쇼
참고 자료
개요
AVPlayer 주변 팩스
방침.
AVPlayer는 UI로 스냅되지 않습니다.
ViewController가 AVPlayer를 유지하고 있다면
코드가 흐트러지거나 다른 View에서 참조될 경우 ViewController를 거쳐야 합니다.
원래 AVPlayer가 UI였나요?
AVPlayer의 초기화와 조작은 메인 라인에 필수적인 미신이다
※ 단, KVO 등록은 주 스레드가 최선You can use Key-value observing (KVO)
to observe state changes
to many of the player’s dynamic properties,
such as its currentItem or its playback rate.
You should register and unregister
for KVO change notifications on the main thread.
더구나
검증이 필요한 것은 하위 스레드의 처리가 메인 스레드의 처리를 늦추어 영상 시청의 UX를 낮출 수 있다는 것이다.
하지만 UI에 얽매일 필요는 없을 것입니다.
비디오 플레이어 가져오기
let configuration = URLSessionConfiguration.default
configuration.requestCachePolicy = .reloadIgnoringLocalAndRemoteCacheData
let configuration = URLSessionConfiguration.default
configuration.urlCache = nil
let configuration = URLSessionConfiguration.ephemeral
let session = URlSession(configuration: configuration)
URLCache.shared.removeAllCachedResponses()
발표자
noppe선생님
슬라이드 쇼
참고 자료
https://github.com/noppefoxwolf/inaba
https://github.com/noppefoxwolf/AppIconGen
개요
이번에 발표된 자산에는 코드가 포함되지 않았다.
이미지, 색상, Storyboard 등.
Pococha 자산 관리 규칙
1. Asset Literal 사용 안 함
Xcode에서는 비슷한 이미지와 색상을 구별하기 어렵습니다.
-> 이름을 붙여서 부르는 게 좋겠어요.
->머리에 외모와 특징에 따라 지정할 수 있는 이름+공통적으로 사용할 수 있는 이름
->xcassets의 이름 공간을 활용하여 간단한 파일 이름으로 접근할 수 있음(Profile Edit/Triangle/Large 등)
2. 문자열에서 에셋을 사용하지 않음
Typo면 점심시간에 붕괴될 거야.
->R.swift 및 Swift Gen 등을 컴파일할 때 Type 확인
3. Interface Builder에서 이미지를 설정하지 않음
존재하지 않는 그림을 설정해도 실행 시간에 붕괴될 수 있습니다.
-> IB에서 설정하지 않은 규칙 설정
->Inaba에서 확인(상기 참고자료 참조)
IB에서 이미지를 제거하면 AutoLayout이 망가져요.
-> Intrinsic conntent size 설정
4. 애플리케이션은 단일 소스에서 생성됨
Victor pdf에서 래스터 이미지를 구성할 때 Apria Icon이 자동으로 생성되지 않는 이유
->AppIconGen의 활용
5. 가상 자산의 명확한 프로젝트 관리
디버깅용 자산은 숨기기 어렵다.앱에 묶으면 다양한 문제가 발생할 수 있다.
-> 각 기능에 대한 대상 만들기, 각 대상에 대한 xcassets 만들기
How to use Dictionary.compactMapValues
발표자
d_date선생님
슬라이드 쇼
참고 자료
https://github.com/apple/swift-evolution/blob/master/proposals/0218-introduce-compact-map-values.md
https://speakerdeck.com/d_date/make-our-swift-better
개요
Dictionary.Swift5에서 commpactMapValues 가져오기(작성자는 발표자 d date)
어떻게 사용합니까?
let d1 = ["a","1","b","2","c",nil]
d1.filter({ $0.value != nil}).mapValues({ $0! })
// ["b":"2","a":"1"](順番は任意)
이렇게↓let d1 = ["a":"1","b":"2","c":nil]
d1.compactMapValues({ $0 })
// ["b":"2","a":"1"](順番は任意)
Javascript의lodash의omitBy를 참고했습니다.
https://lodash.com/
http://tacamy.hatenablog.com/entry/2018/03/04/005938
어떻게 사용합니까?2
let d = ["a":"1","b":"2","c":"three"]
d.mapValues(Int.init).filter({ $0.value != nil}).mapValues({ $0! })
// ["b":2,"a":1](順番は任意)
이렇게↓let d = ["a":"1","b":"2","c":"three"]
d.compactMapValues(Int.init)
// ["b":2,"a":1](順番は任意)
Swift 관리 방법은 다음을 참조하십시오.
Continuous Delivery With Unity Command line arguments
발표자
DayBySay선생님
슬라이드 쇼
개요
유닛 개발 중이시면...
'공유 프로그램의 최신 버전'을 원하시는 분도 계세요.
HockyApp을 통해 업로드합니다.
유니티 빌딩
시간이 오래 걸리다.
그리고 업로드 과정에서 Unity Editor가 닿을 수 없습니다!!!
Xcode 구축
1~2분 더 걸려요.
비극적
내가 설정을 잘못했어...
->다시 유니티 빌딩에서
따라서 Unity 구축 배포 자동화
이번에는 사내 서버 구축기 + Jenkins로 구성되었습니다.
Unity Player -> Xcode.proj의 토출
Unity Command Line Arguments 사용
-executeMethod
빌드 시작 전(Unity 시작 시) 클립 처리
명령행 매개변수 적용하기
Xcode.proj 설정 변경
fastlane은 상황에 따라 사용할 수 없습니다.
[PostProcessBuild]
Player 구축 후 협착 처리
AVPlayer 주변 설계 tips
발표자
toshi0383선생님
슬라이드 쇼
참고 자료
개요
AVPlayer 주변 팩스
방침.
AVPlayer는 UI로 스냅되지 않습니다.
ViewController가 AVPlayer를 유지하고 있다면
코드가 흐트러지거나 다른 View에서 참조될 경우 ViewController를 거쳐야 합니다.
원래 AVPlayer가 UI였나요?
AVPlayer의 초기화와 조작은 메인 라인에 필수적인 미신이다
※ 단, KVO 등록은 주 스레드가 최선You can use Key-value observing (KVO)
to observe state changes
to many of the player’s dynamic properties,
such as its currentItem or its playback rate.
You should register and unregister
for KVO change notifications on the main thread.
더구나
검증이 필요한 것은 하위 스레드의 처리가 메인 스레드의 처리를 늦추어 영상 시청의 UX를 낮출 수 있다는 것이다.
하지만 UI에 얽매일 필요는 없을 것입니다.
비디오 플레이어 가져오기
let d1 = ["a","1","b","2","c",nil]
d1.filter({ $0.value != nil}).mapValues({ $0! })
// ["b":"2","a":"1"](順番は任意)
let d1 = ["a":"1","b":"2","c":nil]
d1.compactMapValues({ $0 })
// ["b":"2","a":"1"](順番は任意)
let d = ["a":"1","b":"2","c":"three"]
d.mapValues(Int.init).filter({ $0.value != nil}).mapValues({ $0! })
// ["b":2,"a":1](順番は任意)
let d = ["a":"1","b":"2","c":"three"]
d.compactMapValues(Int.init)
// ["b":2,"a":1](順番は任意)
발표자
DayBySay선생님
슬라이드 쇼
개요
유닛 개발 중이시면...
'공유 프로그램의 최신 버전'을 원하시는 분도 계세요.
HockyApp을 통해 업로드합니다.
유니티 빌딩
시간이 오래 걸리다.
그리고 업로드 과정에서 Unity Editor가 닿을 수 없습니다!!!
Xcode 구축
1~2분 더 걸려요.
비극적
내가 설정을 잘못했어...
->다시 유니티 빌딩에서
따라서 Unity 구축 배포 자동화
이번에는 사내 서버 구축기 + Jenkins로 구성되었습니다.
Unity Player -> Xcode.proj의 토출
Unity Command Line Arguments 사용
-executeMethod
빌드 시작 전(Unity 시작 시) 클립 처리
명령행 매개변수 적용하기
Xcode.proj 설정 변경
fastlane은 상황에 따라 사용할 수 없습니다.
[PostProcessBuild]
Player 구축 후 협착 처리
AVPlayer 주변 설계 tips
발표자
toshi0383선생님
슬라이드 쇼
참고 자료
개요
AVPlayer 주변 팩스
방침.
AVPlayer는 UI로 스냅되지 않습니다.
ViewController가 AVPlayer를 유지하고 있다면
코드가 흐트러지거나 다른 View에서 참조될 경우 ViewController를 거쳐야 합니다.
원래 AVPlayer가 UI였나요?
AVPlayer의 초기화와 조작은 메인 라인에 필수적인 미신이다
※ 단, KVO 등록은 주 스레드가 최선You can use Key-value observing (KVO)
to observe state changes
to many of the player’s dynamic properties,
such as its currentItem or its playback rate.
You should register and unregister
for KVO change notifications on the main thread.
더구나
검증이 필요한 것은 하위 스레드의 처리가 메인 스레드의 처리를 늦추어 영상 시청의 UX를 낮출 수 있다는 것이다.
하지만 UI에 얽매일 필요는 없을 것입니다.
비디오 플레이어 가져오기
You can use Key-value observing (KVO)
to observe state changes
to many of the player’s dynamic properties,
such as its currentItem or its playback rate.
You should register and unregister
for KVO change notifications on the main thread.
(RxSwift 활용을 통한 원활함)
Sourcery를 사용하여 이벤트 로그를 개선하면
발표자
_sgr_ksmt선생님
슬라이드 쇼
참고 자료
개요
iOS에 이벤트 로그 배치
원시적 실현
개선 1
이벤트 이름 및 매개변수에 Protocol 및 enum 사용
결실
매번 손으로 쓰는 이벤트명과 파라미터가 어려워요.
개선
Sourcery를 통한 자동 생성
https://github.com/krzysztofzablocki/Sourcery
결실
200개 정도 되는 보일러판의 생성은 Sourcery를 사용하여 0.1-2초면 됩니다.
Reference
이 문제에 관하여(potatotips#55 참가 보고서(iOS)), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다 https://qiita.com/shiz/items/230f85413ce200b48d80텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념 (Collection and Share based on the CC Protocol.)