일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 |
- 원격 푸시
- TableView
- ios
- uikit
- DispatchQueue
- entrypoint
- IBOutletCollection
- viewcontroller
- 연산 프로퍼티
- RunLoop
- tableViewCell
- SWiFT
- UIButton
- CoreLocation
- OperationQueue
- weak
- AppTransportSecurity
- property wrapper
- Understanding Swift Performance
- 진입점
- IBOutlet
- for-in
- 트레일링 클로저
- 동시성프로그래밍
- firebase
- Choosing Between Structures and Classes
- WWDC16
- Remot Push
- userdefaults
- 후행 클로저
- Today
- Total
목록iOS (20)
iOS 공부하는 감자

iOS에서 생명주기란 앱의 최초 실행과 종료 사이에 발생하는 일련의 이벤트로 구성된다.내부 메커니즘에 의해 각 이벤트 시점마다 함수들이 자동으로 호출되며, 개발자는 각 시점에 필요한 기능을 재정의하여 구현하면 된다. Life Cycle은 크게 두 종류로 구분된다.앱 생명주기ViewController 생명주기 앱 생명주기앱 생명주기는 앱의 전반적인 실행과 종료에 관련된 생명주기를 말한다.(앱이 실행되고, 백그라운드도 진입하고, 다시 실행되고, 종료되는 등의 주기..) iOS 13 발표 전까지는 왼쪽의 사진처럼 AppDelegate에서 앱 생명주기(앱의 실행과 종료)와 UI 요소의 생명주기 (백그라운드 상태 로직 등)을 모두 처리했었지만발표 이후 오른쪽 사진처럼 AppDelegate에 추가로 SceneD..

스토리보드에서 작업한 UI객체를 코드에 연결하기 위해서는 IBOutlet 또는 IBAction을 사용하여 연결해야 한다. IB는 Interface Builder의 줄임말입니다. 스토리보드에서 control + 드래그를 사용하여 코드에 연결하면 Default값은 Weak가 설정되어 있음을 확인할 수 있는데.. Strong을 사용하여 연결하면 안되는가?? 에 대한 궁금증을 해결하기 위해 정보를 찾아보았다..!! UI 요소들의 참조 구조(?) 우선, ViewController가 메모리에 올라왔을 때 내부적으로 어떻게 참조(Reference)가 발생하고 있는지에 대한 이해가 필요하다. ViewController가 Heap메모리에 올라온 상황을 글쓴이가 앞발로 그려보았다. 위쪽은 IBOutlet을 연결할 때, S..

다크모드는 iOS 13.0 업데이트로 생겨났다. 지금은 프로젝트를 생성하면 다크모드를 지원하는게 기본 설정이지만, (다크모드)지원 여부를 개발자가 프로젝트 설정에서 선택할 수 있다. 프로젝트에서 다크모드를 잘 대응하기 위해서는 라이트모드와 다크모드에서 각각 사용될 수 있도록 색상, 이미지, 아이콘 등 요소에 별도 관리가 필요하다. UIColor에서 다양한 색을 기본 지원하고 있는데, 다크모드를 지원하는 색상과 그렇지 않은 색상이 있다. 이름 앞에 System이 붙은 색상들은 다크모드를 지원해서, 사용자의 디바이스 설정에 따라 색상을 자동 변경해서 보여준다. 예를 들어.. System Background Color를 사용했다면 라이트모드에서는 흰색, 다크모드에서는 검정색으로 표현한다. 만약 개발자가 원하는..

발생 원인 이 런타임 에러는 스토리보드의 뷰객체와 Swift파일의 @IBOutlet or @IBAction의 연결이 끊여졌을 때 발생한다. 대부분은 스토리보드의 뷰객체를 Swift파일과 연결한 후, Swift파일에 연결되어 있는 변수나 함수의 이름을 임의로 변경했을 때 연결이 끊어지면서 에러를 발생시킨다. 가끔.. 그냥 Xcode 문제로 연결이 끊어지고 에러를 발생시킬 때가 있다..! 해결 방법 1) 연결이 끊어진 (에러를 발생시키는) 부분을 찾는다. 스토리보드에서 에러가 발생했을 것으로 의심되는 ViewController를 선택한 후, 커넥션 인스펙터 영역을 확인한다. 해당 ViewController에서 발생한 에러라면 특정 연결 부분에서 노란 경고창을 확인할 수 있다. 2) 에러가 발생한 연결을 끊는..

What’s New in UIButton for iOS 15 1) New Configuration Style UIButton에 새로운 Configuration API가 도입되면서 4개의 기본 베이직 스타일을 선택해서 적용할 수 있게 되었다.

Entry Point란? 프로그램이 시작하는 지점을 의미한다. CPU는 Entry Point를 통해 프로그램을 실행시키기 때문에, 모든 프로그램은 반드시 Entry Point가 존재해야 한다.! Swift에서의 Entry Point C언어를 포함한 많은 프로그래밍 언어에서는 main() 함수를 Entry Point로 사용한다. Swift도 main()함수가 있다..! 다만, C언어처럼 main함수를 직접 구현하는 게 아니라 "@main"이라는 attribute symbol을 사용하여 Swift의 진입점을 지정해준다. (Swift 5.3 ~) // @main 키워드를 사용하여 Entry Point를 알려준다. @main class AppDelegate: UIResponder, UIApplicationDel..
QoS는 동시성 프로그래밍에서 Queue의 서비스 품질을 의미한다. 6가지 종류가 있고, 기본값인 default를 가장 많이 사용한다. 우선순위가 높을수록 더 많은 스레드를 사용하고, 배터리를 집중적으로 소모한다. 서비스 품질 수준 사용 상황 소요 시간 .userInteractive 유저와 직접 인터렉티브 : UI 업데이트 관련 거의 즉시 .userInitiated 유저에게 즉시 필요하지만, 비동기적으로 처리된 작업 ex) 로컬 데이터베이스 읽기 n초 .default 일반적인 작업 - .utility Indicator와 함께 길게 실행되는 작업 ex) Networking n초 ~ n분 .background 유저가 직접적으로 인지하지 않고, 소요시간이 중요하지 않은 작업 ex) 데이터 미리 가져오기, DB..

유튜브처럼 일부 앱의 경우에는 특정 탭바를 버튼처럼 사용하는 경우가 있다. 일단 큰 줄기(?)를 보자면 1. 버튼으로 사용하려는 탭바의 기능(View가 전환되는 기능)을 작동하지 않도록 만든다. 2. 탭바 버튼으로 작동할 기능을 작성한다. 3. 탭바 버튼에 사용할 이미지를 적용한다. 그러하다.. 이런 느낌? 탭바 버튼 만들기 1. TabBarController에 5개의 ViewController를 연결한다. (탭바 버튼으로 사용할 View 포함) 2. 탭바 컨트롤러에 적용할 CustomTabBarController를 생성하고, 탭바 컨트롤러의 클래스를 CustomTabBarController로 설정해준다. class CustomTabBarController: UITabBarController { over..
AutoLayout 제약조건(Constraints)에 따라 뷰 계층 구조에 있는 모든 뷰의 크기와 위치를 동적으로 지정하는 것 View의 위치와 크기를 정하는 방법은 CGRect타입인 Frame을 통해 코드로 지정도 가능하다. 그런데 Frame을 통해 위치를 정해주면 해상도가 다른 환경에서 일관되지 않은 화면이 나온다.!화면이 작든 크든 해당 화면의 좌측 상단을 0, 0으로 기준잡고 위치를 잡아주기 때문.. AutoLayout을 사용하면 이런 문제(?)가 해결된다!-> View의 위치나 크기를 다른 객체를 이용하여 "상대적"으로 제약조건(Constrains)을 주기 때문! 즉, 위치를 잡아주려는 View가 어떤 해상도 환경에 있든지 상관없이기준 객체를 기준으로 왼쪽으로 x만큼, 오른쪽으로 y만큼 위로는 ..

스토리보드 (참고링크) 스토리보드는 iOS 애플리케이션의 사용자 인터페이스를 시각적으로 표현한 것으로 컨텐츠 화면과 해당 화면 간의 연결을 보여준다. 스토리보드는 일련의 장면(=화면?)으로 구성되며, 각 장면은 뷰 컨트롤러와 해당 뷰를 나타낸다. 장면들은 두 뷰 컨트롤러 간의 전환을 나타내는 Segue 객체로 연결된다. 스토리보드 컴포넌트 ▶ Label 하나 이상의 여러 라인을 표시할 수 있다. 설정된 사각형의 크기와 속성에 따라 텍스트를 축소, 줄 바꿈, 자르는 등의 제어를 할 수 있다. (참고) 내부 텍스트의 글꼴, 색상, 정렬, 강조 표시 및 음영을 제어 가능하다. ▶ Button 사용자의 인터렉션을 통해 커스텀 코드를 실행할 수 있다. 버튼의 텍스트, 이미지 및 기타 모양 속성을 설정 가능하다. ..