iOS 환경에서 활용할 수 있는 의존성 관리도구의 종류에는 무엇무엇이 있을까?
의존성 관리도구와 Git을 함께 사용할 때 주의할 점은?
활동학습 내용
애플리케이션 기능을 개발하기 위해 외부 라이브러리를 사용할 때 프로젝트와 해당 라이브러리의 상관관계를 용이하게 관리해주는 도구. 명령어 한 줄 혹은 클릭 몇 번으로 프로젝트에 적절히 포팅하여 삽입해주는 역할 등을 한다. → 시간 절약, 안정성 보장
ex) JS - yarn, npm
ex) Python - pip, pyenvs
코코아팟(Cocoapods)
카르타고(Carthage)
스위프트 패키지 매니저(SPM: Swift Package Manager)
- 애플의 의존성 관리 도구 → Xcode에서 스위프트 패키지 매니저를 공식적으로 지원(Xcode 11부터)
- Dynamic, Static 라이브러리를 모두 지원
- 동적 라이브러리 : 완성된 프로그램을 실행할 때 포함시키는 동적 라이브러리
- 정적 라이브러리 : 프로그램을 컴파일하는 과정에서 포함시키는 오브젝트 파일들의 모임
- http://blog.xoul.kr/2015/06/14/cocoaseeds.html
- 의존성을 자동관리해줌 및 관계파악 용이
- 스위프트 언어에 built-in → 별다른 설치가 필요없음, Xcode Project 파일이 꼭 필요한 것이 아니므로 리눅스에서도 사용할 수 있음
- Package.swift 파일 이외에 수행할 설정이 없음
- Xcode의 GUI 환경에서 관리가 가능
- 아직은 지원하지 않는 라이브러리가 많음
- 해결되지 않은 이슈가 매우 많음
코드가 무거워지고, 복잡해지는 경우 → git ignore에 추가 → pull할 때 install (ex $ pod install
)
협업시 도구의 종류와 버전을 명시해야 함
https://willowtreeapps.com/ideas/how-to-fix-unexpected-podfile-lock-diffs-after-pod-install
https://yagom.net/courses/open-source-library/
https://green1229.tistory.com/61
https://zeddios.tistory.com/654
Instance Method
Returns a sequence of pairs (n, x), where n represents a consecutive integer starting at zero and x represents an element of the sequence.
for (n, c) in "Swift".enumerated() {
print("\(n): '\(c)'")
}
// Prints "0: 'S'"
// Prints "1: 'w'"
// Prints "2: 'i'"
// Prints "3: 'f'"
// Prints "4: 't'"
Instance Method
Returns the maximum element in the sequence.
let heights = [67.5, 65.7, 64.3, 61.1, 58.5, 60.3, 64.9]
let greatestHeight = heights.max()
print(greatestHeight)
// Prints "Optional(67.5)"
Instance Method
Returns the elements of the sequence, sorted.
let numbers = [5, 3, 2, 4, 1]
let sortedNumbers = numbers.sorted()
print(sortedNumbers)
// Prints [1, 2, 3, 4, 5]
지난번 올라프 조언
테이블뷰, 컬렉션뷰는 이벤트를 전달해주는 역할만 하기
네트워크는 최대한 적게 요청하는게 좋음!
셀에서 바로 데이타 불러오는건 안 좋음
매번 셀 만들때마다 불러오니까.
일단은 하나의 뷰컨에
두개의 테이블뷰 컬렉션뷰 놔도 되고
세그먼트에 따라 보여주고 말고를 결정해주면 됨
컨테이너뷰 컨트롤러도 어려운 개념임 ^.ㅠ
컨테이너뷰 컨트롤러의 좋은 점
로직을 분리할 수 있음
e.g. 테이블뷰 컨트롤러는 테이블뷰만 가지고 있음
로직을 짤줄 알아야지
나누는건 그 다음 일임
뷰컨 하나에다 다 때려박아도 되니까
네트워크 흐름을 이해해보고
중복되는 부분이 어딘지 확인해보고
베스트는
컬렉션뷰 하나를 쓰고
셀을 바꾸든가
레이아웃을 바꾸든가 하는 방법
올라프 질문
Q. 저 데이터가 제대로 들어갔다 그 시점을 childviewcontroller는 어떻게 알지?
downloadToGetData
시점이 잘 맞으면 데이타가 전달이 되겠지만
안 맞으면 데이타가 전달이 안됨
—> 하나의 뷰컨에 때려박기 !!!
컨테이너뷰 컨트롤러를 안쓰면
그럼 리스트 화면이랑 그리드 화면이랑 어떻게 나눠주지...? 흠 🤔
How ???
두개의 테이블뷰 컬렉션뷰 놔도 되고
세그먼트에 따라 보여주고 말고를 결정해주면 됨
하나의 뷰컨에 두개의 뷰를 놔둔다는 개념이 아직 와닿지가 않음...
흠...
일단 만들어놓고 보면 되나 ...?