iOS 15

[UIKit] UISegmentedControl 사용해보기

학습 목표UISegmentedControl 개념 알기UISegmentedControl 실습 및 꾸며보기toduck 프로젝트에 사용되는 View 만들어보기학습 내용UIResponder - UIView - UIControl - UISegmentedControlUISegmentedControl의 기본값Image선택된 버튼의 BackgroundImage선택되지 않은 버튼의 BackgroundImage버튼 사이의 DivderImageText선택된 버튼의 TextColor & FontSize선택되지 않은 버튼의 TextColor & FontSizeUISegmentedControl 꾸미기class MainViewController: UIViewController { private let segmented..

iOS/UIKit 2024.06.17

[Xcode] 협업 간 pbxproj 충돌 방지하기

학습 목표깃허브 협업 간 pbxproj 파일에 대한 충돌 해결학습 내용pbxproj 파일이란 ?Build Setting(실제 프로젝트의 설정)을 담은 파일프로젝트 내부에서 생성된 파일들을 파일 유형에 따라 reference를 저장하고 있다.pbxproj에 대한 충돌은 위 설정 파일에 대한 reference가 없을 때 발생pbxproj 충돌 해결방법pbxproj 파일을 binary 파일로 취급하게 해야 함프로젝트 최상위 폴더(README.md가 있는 곳)에서 .gitattributes 파일을 만들고 설정해당 코드를 추가*.pbxproj binary merge=union배운 점최상위 폴더에 .gitattributes를 추가하면 해결 가능하다고 하니미리 설정해두는게 좋을 거 같습니당참조 링크[git] Xcod..

iOS/Xcode 2024.05.24

[Swift] final을 사용해야 하는 이유 with Dispatch

학습 목표Dispatch에 대해 알아보기Static Dispatch & Dynamic Dispatch 차이Reference Type | Value Type | Protocol에서의 Dispatch 동작Extension 했을 때의 Dispatch 동작학습 내용본 주제에 대한 개요🧑🏻‍💻 프로젝트에서 final 키워드를 모든 class에 다 붙여 두셨는데 이유가 있나요?🧑🏻‍💼 더이상의 상속을 하지 않겠다는 의미로 final 키워드를 모두 붙여주었습니다!🧑🏻‍💻 그렇다면 final 키워드를 사용함으로써 상속을 막는것 이외에 다른 장점은 무엇이 있을까요?🧑🏻‍💼 ?출처: https://itllbegone.tistory.com/10Dispatch에 대한 개념을 알아야 final을 써야 하는..

iOS/Swift Grammar 2024.05.22

[디버깅 회고] 네트워크 통신 공부 중 발생한 보라색 에러

App Transport Security has blocked a cleartext HTTP connection to (대충 서버주소) since it is insecure. Use HTTPS instead or add this domain to Exception Domains in your Info.plist.위와 같은 에러가 발생했다. 내가 설정해둔 baseURL의 서버 도메인이 HTTPS가 아닌 HTTP였기 때문에 발생한 오류였다.보라색 에러가 뜰 때마다 놀라곤 하는데, 애플에서는 HTTP를 사용을 금하고 있다. (보안이 문제니까 ㅇㅇ) Info.plist에서 'Allow Arbitrary Loads - YES'로 해주면 된다. 애플은 2018년 이후로 HTTP 연결 대신 HTTPS를 통한 보안 연..

iOS/Xcode 2024.05.19

iOS 네트워크 통신 (1/3) - 개요 (URLSession, Alamofire, Moya)

학습 목표이번 시간에는 iOS에서 사용되는 네트워크 통신의 수박 겉핥기 개요서버와 통신할 때 사용되는 URLSession, Alamofire 각 특징 알기URLSession과 Alamofire 차이 알기Moya 특징/동작 알기학습 내용URLSession과 AlamofireURLSessionAn object that coordinates a group of related, network data transfer tasks.네트워크 데이터 전송과 관련한 일을 처리하는 클래스애플이 제공하는 APIURL Loading System표준 IP 혹은 유저가 만든 커스텀 프로토콜을 사용하여URLs에 의해 구분되는 자원을 접근하게 함→ 비동기적으로 진행되므로 통제해줘야 하는데 이를 URL Session이 해줌하나의 UR..

iOS/UIKit 2024.05.12

[프로토콜] UITextFieldDelegate 공식문서 뜯어보기

학습 목표 Delegate 디자인 패턴을 익힘 UITextFieldDegate 프로토콜을 익힘 학습 내용 Delegate 디자인 패턴 객체가 자신의 기능을 다른 객체에게 위임하여 기능을 실행하는 것 Delegate는 프로토콜로 구현됨, *(Delegate) = 위임하다 UITextField NSObject - UIResponder - UIView - UIControl - UITextField 위 사진의 예로 이번 UITextFieldDelegate를 설명하겠다. UITextField에 글자를 입력 바꾸기 버튼을 누름 UILabel에 1번에서 작성한 글자가 보이게 됨 UITextFieldDegate @MainActor protocol UITextFieldDelegate UITextField에서 발생하는 이..

iOS/UIKit 2024.04.12

[Xcode] .xcconfig 충돌로 인한 Xcode 무한팅김 현상을 겪고서

[문제상황] - 내가 끄는게 아니다. 강제로 꺼지는 거임 (메모리에서 아예 날라가버림) - 해당 프로젝트만 문제이다. - 해당 프로젝트 내에서도 'Info - Resource tags'와 'Info - Open As - Source code', '모든 xcconfig 확장자 파일'에서만 팅김 - 추가로 모든 .xcassets이 고장나버림.. (구글링해보니 복사 해두고 삭제했다가 다시 로드하라함) failed to read asset tags: The command '~~' 모든 xcconfig 확장자 파일 및 Info 내에서 Xcode 무한팅김 현상 [해결을 위한 노력] - 똑같은 과정으로 새 레포 파서 xcconfig 파일을 충돌내려고 노력했음 (근데 테스트할 때는 이유를 모르겠으나 잘 돼 버림) - ..

iOS/Xcode 2024.03.22

[Swift] 제네릭 대신 Any 타입을 사용하면 안될까 ?

결론 1. Int면 Int끼리, String이면 String끼리 교환하고 싶은데 제약을 못 걸어줌 2. Any로 매개변수를 받는다면, 전달인자에 Any로 전달되어야 함 3. Any 타입을 넣어 호출하는데, 이 순간 값이 복사되어 할당됨 (새 변수로만 함수를 호출한다는 뜻) Any, AnyObject 스위프트에는 특정 타입을 지정하지 않고 여러 타입의 값을 할당할 수 있는 Any와 AnyObject라는 특별한 타입이 있다. Any는 함수 타입을 포함한 모든 타입을 뜻하고, AnyObject는 클래스 타입만을 뜻한다. 제네릭 (Generic) 제네릭은 스위프트의 어떤 타입에도 유연하게 대응할 수 있으며 코드의 중복을 줄이는 기능이다. [이전 글 참고] https://kyxxn.tistory.com/39 [S..

iOS/Swift Grammar 2024.02.15

[Swift] 제네릭 문법

제네릭 제네릭은 스위프트의 어떤 타입에도 유연하게 대응할 수 있으며 코드의 중복을 줄이는 기능이다. 또한, 제네릭으로 구현한 기능과 타입은 재사용에도 쉬우며 Array, Dictionary, Set 등의 타입은 모두 제네릭 컬렉션이다. import Foundation func swapTwoInt(_ a: inout Int, _ b: inout Int) { let tmp: Int = a a = b b = tmp } var intOne: Int = 10 var intTwo: Int = 50 print("intOne : \(intOne) | intTwo : \(intTwo)") swapTwoInt(&intOne, &intTwo) print("intOne : \(intOne) | intTwo : \(intTwo..

iOS/Swift Grammar 2024.02.15

[Swift] 클로저(Closure) 간소화 표현, 값 획득, 탈출 클로저

클로저 표현 간소화 문맥을 이용한 타입 유추 let reversed: [String] = names.sorted { (s1, s2) in return s1 > s2 } 클로저는 메소드가 요구하는 형태로 전달해야 함 매개변수 타입과 개수, 반환 타입 등이 같아야 전달인자로 전달되므로 클로저는 이미 적합한 타입을 준수한다고 유추할 수 있기에 생략해도 됨 단축 인자 이름 let reversed: [String] = names.sorted { return $0 > $1 } 간결한 표현을 통해 매개변수 이름 생략가능 in 키워드도 안 적어도 됨 암시적 반환 표현 let reversed: [String] = names.sorted { $0 > $1 } 클로저가 반환 값을 갖는 클로저이고, 클로저 내부의 실행문이 단..

iOS/Swift Grammar 2024.02.06