[Swift]Table View 이슈
Udemy.zip 2022. 3. 5. 15:18

Table View - Code base Issue 📝 이슈 ▾ 알림 탭 프로필 이미지(Image View)에 Tap Gesture가 실행이 되지 않았다. 팔로잉 버튼(Button)의 Add Target이 실행되지 않았다. 설명 해당 알림 탭의 알림 하나하나가 UITable View Cell이다. 각 Cell안에는 Image View(Tap Gesture), Button(Add Target)가 구현되어있고, 각각 기능을 추가한 상태이다. addSubView를 이용해 각각 컴포넌트들을 넣어주었다. 표시만 되고 클릭이 되질 않았다. 원인 🍎 해당 뷰의 코드는 View 폴더에 TableViewCell 클래스 파일이다. UITableViewCell에서는 content View가 존재한다. 이를 위해 사진을 첨부..

[iOS]Strong과 weak 참조 방식
iOS_Swift.zip 2022. 2. 27. 19:17

메모리 참조 방식을 살피기 전에 ARC를 짚고 넘어가보려고 합니다. ARC ❓ 정의 ▾ 컴파일 시 코드를 분석해서 자동으로 retain, release 코드를 생성해주는 것 retain retain count(= reference count) 증가를 통해 현재 Scope에서 객체가 유지되는 것을 보장합니다. release retain count(= reference count) 감소시킵니다. retain 후에 필요 없을 때 release 합니다. 참조된 횟수를 추적해 더 이상 참조되지 않는 인스턴스를 메모리에서 해제해 주는 것 참조 카운트가 0이 되면 자동으로 메모리 해제된다고 보면 됩니다. 0이 될 때 deinit을 호출해서 메모리 해제를 시킵니다. 자동으로 RC를 관리해주기 때문에 메모리 해제에 대한..

[Swift]Model 동기화
Udemy.zip 2022. 2. 27. 15:17

트위터 클론 코딩 & Firebase 사용 가볍게 봐주시면 감사합니다 😁 Tweet 피드 중 기존 "좋아요" 데이터 불러오기 이슈 ▾ 기존에 좋아요를 눌렀던 피드가 앱을 재접속하여 다시 누르면 또 다시 좋아요가 카운팅된다. 사용자가 좋아요를 눌렀는지에 대한 여부를 체크하여 View가 보여질 때 데이터도 함께 동기화가 되어야 한다. 원인 ▾ Tweet - Model struct Tweet { let caption: String let tweetID: String let uid: String var likes: Int var timestamp: Date! let retweetCount: Int var user: User var didLike = false// 이 부분 // ... } 기존 좋아요를 판별하기 ..

[Swift]ActionSheet-Protocol
Udemy.zip 2022. 2. 25. 18:12

코드 진행을 위한 디테일한 구현이 아닌 흐름을 기록했습니다. 😀 ActionSheet 📝 왜 프로토콜을 사용했을까? ActionSheetLauncher.swift(NSObject)라는 파일을 만들었고, 우리가 실제로 클릭 이벤트를 받아야 할 부분은 TweetHeader 파일이다. TweetHeader 파일은 TweetController 안에 헤더를 구성하는 파일이다. TweetController(Controller) → UICollectionViewController TweetHeader(View) → UICollectionReusableView Controller안에 있는 View에 해당 이벤트가 존재해야하므로, View에서는 View 관련된 코드만 적어둬야 하는 MVVM 패턴이므로, Controlle..

[iOS]Protocol
iOS_Swift.zip 2022. 2. 20. 00:23

Protocol 🤷🏻‍♂️ https://docs.swift.org/swift-book/LanguageGuide/Protocols.html Protocols — The Swift Programming Language (Swift 5.6) Protocols A protocol defines a blueprint of methods, properties, and other requirements that suit a particular task or piece of functionality. The protocol can then be adopted by a class, structure, or enumeration to provide an actual implementation of tho docs.swi..

[iOS]NotificationCenter
iOS_Swift.zip 2022. 2. 18. 17:04

Swift 초보의 코드이므로, 참고만 해주시면 감사합니다 😅 NotificationCenter 📑 정의 ▾ Notification Center 그대로 번역하면 "등록된 관찰자에게 정보를 브로드캐스트 할 수 있도록 하는 알림 디스패치 메커니즘"이라고 합니다. 쉽게 말해 Notification이 오면 Observer Pattern(옵저버 패턴)을 통해서 등록된 옵저버들에게 Notification을 전달하기 위해 사용하는 클래스라고 보면 됩니다. 우리는 Notification도 들어봤을 텐데, Notification과 NotificationCenter 무슨 차이가 있는지는 아래 Notification에 대한 정의를 볼게요. Notification 그대로 번역하면 "등록된 모든 관찰자에게 알림 센터를 통해 방송..

[iOS]App Thinning
iOS_Swift.zip 2022. 2. 16. 13:08

App Thinning - 앱 시닝 정의 ▾ 애플리케이션이 디바이스에 설치될 때, 앱 스토어와 운영체제가 디바이스의 특성에 맞게 설치되도록 하는 설치 최적화 기술을 의미합니다. 최소한의 디스크 사용과 빠른 다운로드를 제공할 수 있습니다. 구성으로는 슬라이싱(slicing), 비트코드(bitcode), 주문형 리소스(on-demand resource)가 있습니다. 구성 ▾ 슬라이싱(Slicing) ▾ 다양한 기기와 운영체제 버전에 대하여 여러 가지 app bundle의 변형(variants)을 생성하고 전달하는 과정입니다. 변형(variants)은 실행가능한 아키텍처, 리소스만 포함합니다. 앱의 전체 버전을 계속 개발하고 앱스토어 커넥트(App Store Connect)에 업로드하게 되면 앱스토어는 앱이 ..

[iOS]lazy 키워드
iOS_Swift.zip 2022. 2. 16. 10:42

About Lazy 정의 ▾ 이 시퀀스와 동일한 요소를 포함하지만 맵 및 필터와 같은 일부 작업이 지연 구현되는 시퀀스입니다. 쉽게 말해 lazy 변수는 처음 사용되기 전까지는 연산이 되지 않는다고 볼 수 있습니다. 고려 사항 ▾ lazy는 반드시 var와 함께 쓰여야 합니다. 기본적으로 lazy로 선언된 변수는 초기에는 값이 존재하지 않다가 이후에 값이 생기는 것이기 때문에 let으로 선언은 될 수가 없습니다. Struct, Class에서만 사용이 가능합니다. Computed Property에는 lazy 키워드를 사용할 수 없습니다. lazy는 처음 사용될 때 메모리에 값을 올리고 그 이후부터는 계속해서 메모리에 올라온 값을 사용합니다. 사용할 때마다 값을 연산하는 Computed Property에는 ..

[iOS]Frame과 Bounds의 차이
iOS_Swift.zip 2022. 2. 14. 23:20

정의 Frame "상위 뷰의 좌표계에서 뷰의 위치와 크기를 설명하는 프레임 사각형" Bounds "자체 좌표계에서 뷰의 위치와 크기를 설명하는 경계 사각형" 기능 Frame 핵심은 "Super View(상위 뷰)의 원점으로부터 얼만큼 떨어져 있는지를 나타낸다." 위의 사진을 참고해서 핵심을 살펴보면 바로 이해할 수 있다. 또 한가지 더 있다. 뷰의 사이즈를 보는 관점이 다르다. 아래 사진을 살펴보자. 위 사진처럼 Frame은 View의 Size를 오른쪽과 같이 고유의 사각형으로 측정이 된다. Bounds 핵심은 "해당 View가 이동하지 않고, Sub View(하위 뷰)를 반대방향으로 이동을 시킨다." view1.bounds.origin.x = 10 view1.bounds.origin.y = 10 위 코..

[iOS]Escaping Closure(@escaping)
iOS_Swift.zip 2022. 2. 12. 14:49

@escaping 📑 About @escaping ▾ escaping을 접하다 ▾ func fetchUser(completion: @escaping(User) -> Void) { ... } 위의 코드처럼 통신이나 비동기 처리를 할 때 이러한 코드를 본 적이 있습니다. completion 클로저를 파라미터로 작성하면서 @escaping이 붙은 걸 보면서 어떨 때 사용하는지 느낌만 알고, 정확히 어떨 때 사용하며 무엇인지 몰랐습니다. 정의 ▾ Escaping Closure 클로저가 함수의 인자로 전달됐을 때, 함수의 실행이 종료된 후 실행되는 클로저입니다. Non-Escaping Closure 함수의 실행이 종료되기 전에 실행되는 클로저입니다. 비교하기 ▾ Non-Escaping Closure func fe..

[iOS]SDWebImage 에러
iOS_Swift.zip 2022. 2. 11. 13:35

SDWebImage 모듈 설치 에러 이슈 🤷🏻‍♂️ 평소 라이브러리 설치처럼 cocoapods를 이용해 SDWebImage 라이브러리를 설치했다. import SDWebImage를 하면 모듈을 찾을 수 없다는 에러문이 떴다. 나의 노력 ▾ 새로고침 워크스페이스 삭제 및 재설치 pod update SDWebImage 삭제 및 재설치 재부팅 해결책 📓 온갖 자료를 살펴보던 중 cocoapods에 라이브러리 선언에 코드를 추가해주었다. pod 'SDWebImage', :modular_headers => true 어떠한 이유인지는 모르겠지만 아래에 사이트를 참고해보면 좋을 것 같습니다. 저와 같은 에러가 뜬다면 당황하지 말고, 위에 코드로 podfile을 수정해보시길...🥲 참고 ▾ https://stackov..

[Swift]BOJ-11726
Algorithm.zip 2022. 2. 7. 13:03

BOJ-11726, 2xn 타일링 문제 📑 https://www.acmicpc.net/problem/11726 11726번: 2×n 타일링 2×n 크기의 직사각형을 1×2, 2×1 타일로 채우는 방법의 수를 구하는 프로그램을 작성하시오. 아래 그림은 2×5 크기의 직사각형을 채운 한 가지 방법의 예이다. www.acmicpc.net 문제 정리 ▾ 크기가 2 * n의 직사각형을 위한 n의 정수 입력을 받는다. 입력받은 크기를 2*1 && 2*2 크기의 타일로 만들 수 있는 방법의 수를 10,007로 나눈 나머지를 출력한다. 접근 🚶🏻 나의 생각 ▾ 노트에 하나하나 케이스를 그려보면서 규칙을 찾아보았다. DP 문제이기 때문에 규칙만 찾으면 구현하는 건 어려움이 없다고 생각했다. 노트에 적어보며 찾은 규칙은 ..