옵셔널 체이닝 (Optional Chaining) 옵셔널(optional)일 수 있는 인스턴스 내부의 프로퍼티, 메소드, 서브스크립트를 매번 nil 체크를 하지 않고 최종적으로 원하는 값 또는 nil 인지 판단하는 방법 입니다. 여러 쿼리들을 연결할 수 있으며, 링크중 하나라도 nil일 경우 최종값은 nil이 반환 됩니다. (참고링크) 강제 언래핑 대체용도의 옵셔널 체이닝 (Optional Chaining as an Alternative to Forced Unwrapping) 옵셔널 체이닝은 옵셔널 값 뒤에 물음표(?)를 붙여서 표현 합니다. 강제 언래핑할때 뒤에 느낌표(!)를 붙이는것과 문법이 비슷하지만, 가장 큰 차이점은 강제 언래핑을 할때 값이 없으면 런타임 에러가 발생하고, 옵셔널 체이닝을 사용하..
개념 TableView 하나의 열(column)에 배열된 행(row)을 사용해 데이터를 표시하는 뷰 UIScrollView 상속 받습니다. 목록(list)을 나타낼 때 주로 사용되며, 수직 스크롤만 가능합니다. 테이블 개별 항목을 구성하는 cell은 UITableViewCell 입니다. indexPath값을 통해 cell을 구분합니다. 섹션(section)을 이용해 행을 시각적으로 그룹화할 수 있습니다. 헤더(header)와 푸터(footer)를 이용해 추가 정보를 보여줄 수 있습니다. 장점 cell을 재사용할 수 있어, cell을 초기화 하는 부담을 줄일 수 있습니다. 메모리를 절약하여 많은 데이터를 효율적으로 표시할 수 있기 때문에, 단순 항목을 표시할 때 유용합니다. 단점 여러 디자인 요소를 추가하..
*Heap 보다는 *Stack 메모리에 할당 한다. Heap에 할당되는 참조 타입의 class 보다는, Stack에 할당되는 값 타입의 struct나 enum에 할당한다. Why? Stack은 LIFO(Last In First Out)의 단순한 구조로 메모리 할당과 해제가 편리하고 빠르기 때문입니다. 반면, class는 Heap 영역에서 사용하지 않은 블록을 찾아 메모리 할당을 처리하며, 할당 해제시에는 해당 메모리를 적절한 위치로 다시 삽입 합니다. 사전적 의미 Heap: (아무렇게나 쌓은) 더미 Stack: (차곡차곡 쌓은) 더미 Reference counting을 적게 만든다. class 에서 String, Dictionary, Set, Array와 같은 가변길이 (길이가 고정적이지 않은) Coll..
소멸자 (Deinitialization) Deinitialization는 클래스 인스턴스가 할당 해제되기 직전에 호출됩니다. deinit은 클래스에서만 사용할 수 있습니다. 소멸자의 동작 (How Deinitialization Works) Swift는 더이상 필요로하지 않는 자원의 해지를 자동으로 해줍니다. (ARC) 하지만 사용자가 자원 해지를 수동으로 해줘야 하는 경우도 있는데, 이때 사용하는게 deinit 입니다. 소멸자는 클래스당 하나만 선언할 수 있고, 파라미터를 받을 수 없습니다. 형태는 아래와 같습니다. deinit { // perform the deinitialization } deinitializer 는 클래스의 인스턴스 메모리 해제가 필요할때 자동으로 호출 되며, 수동 호출이 불가 합니..
고차함수에서 피해가고 싶었던 reduce ... 요즘 알고리즘 문제를 풀면서 모르면 안되겠다는 생각이 들어 한번 파보려고 합니다. 👊 공식문서 컨테이너의 요소들을 결합한 결과를 반환합니다. 예제를 통해서 보시죠!! 예제 1 let numbers: [Int] = [1, 2, 3, 4] var sum = numbers.reduce(initialResult: Result>, Result(Result, Int) throws -> Result(_ partialResult: Result, Int) throws -> Result) 먼저 initialResult, nextPartialResult 부분을 볼게요. initialResult: 결합을 시작하기전 초기 값을 지정 합니다. nextPartialResult: 요..
SceneDelegate란? iOS13 이후 UI생명주기에 관한 이벤트를 처리하기 위해 사용하는 객체 입니다. 화면에 무엇을 보여줄지 관리하는 역할을 하며, iOS 13부터 window의 개념이 scene으로 대체 되었습니다. why? 아이패드와 같이 큰 화면의 하나의 앱에서 2개 이상의 화면을 보여주기 위해 Scene 개념이 도입 되었습니다. SceneDelegate Methods 메소드 (펼쳐보기) 더보기 scene(_: willConnectTo: option:) application(_: didFinishLaunchingWithOptions:) 메소드와 유사합니다. UISceneSession LifeCycle 에서 가장 처음 불리는 메소드로 첫 content view, 새로운 UIWindow를 생성..
for문을 돌리다보면 index가 필요할 때가 있습니다. 이럴 때 Swift 에서 제공하는 메소드 enumerated() 를 사용하면 되는데요!! 오늘은 enumerated 메소드에 대해 공부해 보려고 해요 ! 공식문서 (n, x)와 같이 튜플 형태로된 쌍을 return 한다고 합니다. n은 0부터 연이어 시작되는 int 형식 x는 각 요소 별로 차례대로 시작 쉽게말해 (index, value) 라고 생각하시면 돼요! 예제를 보겠습니다 for (index, value) in "Swift".enumerated() { print("\(index): \(value)") } // 0: S // 1: w // 2: i // 3: f // 4: t "Swift" 라는 문자열을 하나씩 뜯어 print 해본 결과 입니..
MVC Model, View, Controller 로 나누어 설계한 아키텍처 패턴 입니다. 구조 MVC의 구조를 그림으로 나타내면 아래와 같습니다. Model : 앱에 사용되는 데이터와 데이터를 가공하는 부분 입니다. View : 사용자에게 보여지는 화면 부분(UI) 입니다. Controller : 사용자의 입력(Action)을 받아 처리하는 부분 입니다. 동작 순서 MVC의 흐름은 아래와 같습니다. 모든 입력(Action)은 Controller에 전달 및 처리가 됩니다. Controller는 사용자의 Action을 확인 후, Model을 업데이트 합니다. Controller는 Model을 나타내줄 View를 선택합니다. View는 Model을 이용해 화면을 나타냅니다. View가 업데이트 되는 방법 V..
처음으로 프로그래머스에서 과제테스트를 봤었는데 제출 방법을 몰라 제출도 못했... 지금이라도 알았으니 됐지.. 무튼 !! 오늘은 앱 개발을 하면서 무조건 해보는 TableView를 코드로 작성해 보겠습니다!! 결과 TableView를 세팅할때는 아래 6가지를 구현해주시면 됩니다! ToDo 1. constraints 2. set delegate 3. make tableViewCell 4. register 5. row height 6. show data 1. constraints 먼저 tableView가 어느위치에 있을지 잡아줍니다. 저는 화면 전체를 꽉 채우도록 구현했어요. class TableViewController: UIViewController { var tableView = UITableView(..
사용자가 textfield에 입력한 값을 저장하는 기능에서 좋은 피드백을 받았습니다. 문장, 단어 앞 뒤에 공백이 있을때도 그대로 등록이 되는데 잘라줄순 없나요 ? 어... 역시 찾아보니까 있었어요 오늘 해볼건 이겁니다! 앞에 공백이 많이 띄워져있는데도 공백을 없애고 String만 나오게 해볼거에요! 물론 뒷 공백도 잘라줍니다. (글자 사이의 공백은 유지시켜줘요!) 공식문서 trimmingCharacters(in:) 이라는 메소드를 사용해서 in: 이 갖고 있는 프로퍼티중에 .whitespaces를 선택합니다. 저는 아래와 같이 사용했어요 extension UITextFieldPlaceholderViewController: UITextFieldDelegate { func textFieldShouldRet..
- Total
- Today
- Yesterday
- RIBs tutorial
- Swift RIBs
- iOS error
- 원티드 프리온보딩
- swift 고차함수
- swift protocol
- Class
- Swift
- Swift 프로그래머스
- swift property
- swift reduce
- 2023년 회고
- RTCCameraVideoCapturer
- removeLast()
- ios
- Combine: Asynchronous Programming with Swift
- Swift inout
- Swift 알고리즘
- CS 네트워크
- Swift Leetcode
- Swift joined
- Swift init
- swift (programmers)
- swift programmers
- Swift joined()
- Swift 프로퍼티
- Swift Error Handling
- Swift ModernRIBs
- Swift 내림차순
- Swift final
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | |||
5 | 6 | 7 | 8 | 9 | 10 | 11 |
12 | 13 | 14 | 15 | 16 | 17 | 18 |
19 | 20 | 21 | 22 | 23 | 24 | 25 |
26 | 27 | 28 | 29 | 30 | 31 |