코드 영역 (Code) 소스 코드 → *기계어 형태로 변형되어 수정이 불가능하게 Read-Only로 저장 된다. 기계어: 컴퓨터가 읽을 수 있는 0, 1 로 이루어진 언어. 시점 컴파일 타임 데이터 영역 (Data) 전역변수, 정적 (static) 변수가 저장 되는 영역 struct Person { // 정적 변수로 데이터 영역에 할당 static let name = "Peppo" } // 전역변수로 데이터 영역에 할당 var age = Int var height = Int 시점 컴파일 타임 프로그램이 시작할 때 할당 프로그램 종료시 소멸 힙 영역 (heap) 개발자가 할당/ 해제 하는 메모리 영역 mallock, calloc 으로 힙에 메모리를 할당할 수 있고, 이를 '동적 할당' 이라 한다. 사용 후..
서브스크립트 (Subscripts) 클래스, 구조체, 열거형에서 스크립트를 정의해 사용할 수 있습니다. 서브스크립트를 활용하면 추가적인 메소드 없이 특정 값을 할당하거나 가져올 수 있습니다. 예를들어, Array 인스턴스의 특정 요소에 someArray[index] 문법으로, Dictionary 인스턴스의 특정 요소에 someDictionary[key] 이런식으로 접근할수 있습니다. 하나의 타입으로 여러 서브스크립트를 정의할 수 있으며, 오버로드(Overload)도 가능합니다. (질문) 또한 필요에 따라 여러 인자 값을 사용할 수 있습니다. 서브스크립트 문법 (Subscripts Syntax) 인스턴스 메소드 문법과 연산 프로퍼티 문법과 유사합니다. 다만, 서브스크립트에선 읽기-쓰기(read-write)..
알람 부분을 구현하는 중에 아래의 프로퍼티들을 담은 Alarm 이라는 객체를 만들어 UserDefaults에 저장하려고 합니다. // Alarm.swift struct Alarm: Codable, Equatable { let alarmTable: String let alarmMeridiem: String let alarmTimes: String } 아하! 저번에 UserDefaults 때 값 저장, 불러오기는 아래 처럼 하면 된다했었지 ! 그럼 이렇게 값저장 하면 되겠네 ! . . . 응 안돼 ~ 객체를 저장할때는 조금 다른 방식으로 합니다. 바로 PropertyListEncode, PropertyListDecode를 활용하는데요. 간단하게 Encode, Decode의 개념에 대해 알아보고 갈게요 Enc..
네트워크 통신으로 alamofire만 공부를 했었는데 URLSession 을 기반으로 만들어져 해당 내용을 알아야 도움이 될것 같다는 생각에 정리를 해봅니다. SwiftUI 에선 URLSession + Combine 조합을 더 많이 사용한다는 말도 있더라구요 ㅠ GET 으로 데이터를 받아와서 CollectionView에 보여주는 작업을 해보려고 합니다. 네이버 API 를 사용하려면 clientID와 clientSecret이 필요합니다. https://developers.naver.com/apps/#/register?defaultScope=search 애플리케이션 - NAVER Developers developers.naver.com URLSession HTTP/ HTTPS를 통해 콘텐츠 및 데이터를 주고..
imageView에 사진을 넣다보니 imageView.contentMode = . 부분에 여러가지 case중 헷갈렸던 부분을 정리해 보려고 합니다. scaleToFill • 기본값 • 비율을 무시하며, imageView안에 꽉 차게 사이즈를 맞춥니다. scaleAspectFill • 원본의 비율을 유지하고 imageView에 꽉 차게 하지만 이미지가 잘립니다. • imageView 영역 밖으로 사진이 넘어갑니다. (아래 사진 참고) • clipsToBountds = true 로 영역밖을 넘어가는 image를 imageView 사이즈에 맞게 맞춰줄 수 있습니다. • 인물, 동물 사진에 적합하지 않습니다. scaleAspectFill 적용 .scaleAspectFill .clipsToBountds = tru..
들어가기전 함수와 메소드의 차이! 메소드 - 클래스, 구조체, 열거형 안에 있는 함수 !! 함수 - 클래스, 구조체, 열거형 외부에 있는 함수 ! 특정 타입의 클래스, 구조체, 열거형과 관련된 함수를 메소드(Methods)라고 합니다. 메소드에는 두가지 종류가 있습니다. 인스턴스 메소드: 특정 작업과 기능을 캡슐화 하여 실행할 수 있는 메소드 타입 메소드: 특정 타입과 관련된 메소드 타입 메소드는 Objective-C의 클래스 메소드와 유사합니다. Swift에서 메소드와 Objective-C 메소드간의 차이점은 Objective-C에서는 클래스 타입에서만 메소드를 선언할 수 있고, Swift에서는 클래스, 구조체, 열거형에서도 메소드를 선언하여 사용할 수 있다는 점입니다. 인스턴스 메소드 (Instanc..
DispatchGroup DispatchGroup으로 작업이 완료될 때까지 기다리거나, 완료되면 알림을 받을 수 있게 할 수 있습니다. DispatchGroup에는 아래와 같은 메소드가 있습니다. wait() enter() leave() wait() 작업이 완료되기까지 기다립니다. wait(timeout:) 으로 시간을 지정해주지 않으면 영원히 기다리니 끝날거라는 보장이 무조건 있을 경우에만 wait() 으로 써줍니다. enter() 작업이 시작되었음을 Group에 수동으로 알리기 위해 호출 합니다. enter() 메소드의 호출 수와 leave() 메소드의 호출 수는 같아야 합니다. 하나라도 적거나 많으면 앱은 다운됩니다. leave() 작업이 완료되었음을 알리기 위해 호출 합니다. 아래는 Dispatc..
아래 같은 상황처럼 Detail VC (내용수정) -> 저장 -> 화면 dismiss -> Main VC에 반영 위의 기능을 해보려고 합니다. ViewController 간에 데이터를 전달하는 방법은 Notification, Delegate 등이 있는데 오늘은 Delegate를 이용한 데이터 전달 방법에 대해 공부해 보겠습니다. Detail VC (데이터를 보내는곳) Delegate 패턴을 적용하기 위해선 protocol을 사용해야 하는데요. 해당 protocol은 채택, 준수, 대리자 위임을 해줘야 합니다. 먼저 protocol을 생성해 줍니다. (SendDataDelegate) // DetailViewController.swift protocol SendDataDelegate { // 프로토콜 선언 ..
앱을 만들다가 CollectionViewCell에 데이터가 없을때 즉, Empty state일때 아무것도 없는 화면 보다 데이터 추가를 유도 하는 문구를 나타내는게 필요할것 같아 공부해봤습니다. 먼저 UICollectionView의 Extension에 아래 두개 메소드를 추가해줍니다. // Extension.swift import Foundation import UIKit // MARK: UICollectionView extension UICollectionView { // 1 func setEmptyMessage(_ message: String) { let messageLabel: UILabel = { let label = UILabel() label.text = message label.textCol..
- Total
- Today
- Yesterday
- swift programmers
- Swift final
- Swift 프로퍼티
- swift reduce
- Combine: Asynchronous Programming with Swift
- swift 고차함수
- RIBs tutorial
- Class
- CS 네트워크
- Swift inout
- Swift 알고리즘
- RTCCameraVideoCapturer
- iOS error
- Swift Error Handling
- Swift ModernRIBs
- Swift joined
- swift protocol
- swift property
- removeLast()
- Swift Leetcode
- Swift 내림차순
- Swift 프로그래머스
- Swift
- Swift init
- 원티드 프리온보딩
- Swift RIBs
- 2023년 회고
- swift (programmers)
- ios
- Swift joined()
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 |