📊 분류 전체보기 278

[iOS] 전역변수, 클래스간 데이터 전달 - 3

1. 전역변수 설정 및 참조 AppDelegate 에 다음과 같은 globalData 와 같은 전역변수가 있다고 하자. 이를 다른 화면에서 출력해보겠다. @main class AppDelegate: UIResponder, UIApplicationDelegate { // 전역변수 선언하는 부분 - 변수, 배열, 딕셔너리, 구조체, 클래스 var globalData: String = "" 뷰 컨트롤러 쪽이다. AppDelegate 를 참조하는 방법은 다음과 같이 꼭 써줘야 한다. (이게 룰이다) import UIKit class NvMainViewController: UIViewController { // 전역변수를 참조하는 방법 let appDelegate = UIApplication.shared.dele..

🦜 Swift 2023.05.14

[iOS] 뷰 컨트롤러의 수명 주기, 팝업창 띄우기 - 2

뷰 컨트롤러의 수명 주기 // // viewDidLoad : 뷰가 생성될 때 한번만 호출됨. (초기화 용도) // viewWillAppear : 뷰가 화면에 보일 때마다 호출됨. (화면 갱신 용도) // viewDidAppear : 뷰가 화면에 보이고 나서 매번 호출됨. // viewWillDisappear : 뷰가 화면에 사라지기 전마다 호출됨. (데이터 전달) // viewDidDisappear : 뷰가 화면에 사라지고 나서 매번 호출됨. // viewWillLayoutSubviews : 컨트롤(서브뷰)들의 레이아웃을 잡기 전에 호출됨. // viewDidLayoutSubViews : 컨트롤들의 레이아웃을 잡고 나서 호출됨 위와 같은 수명 주기로 ..

🦜 Swift 2023.05.13

미디에이션 어댑터란?

회사가 추구하는 방향성이 광고로 기울어지면서 점점 광고를 붙이는 일이 많아졌다. 처음에 나는 Applovin, Admob 등이 단순히 "광고" 라고 생각했다. 그래서 다음과 같은 의존성을 보고 모두 다 Applovin 이군!!! Applovin 을 설치할 때 Vungle 도 같이 필요한가보군!! ← 이와 같은 생각을 하였다. 하지만 이는 틀렸다. 용어들을 하나하나 정리해가며 이들의 상관성은 무엇인지 한 번 알아보자! 미디에이션이란? 미디에이션은 앱에 광고를 게재하기 위해 사용하는 광고 소스를 한곳에서 관리할 수 있는 기능입니다. 미디에이션을 사용하면 들어오는 광고 요청을 여러 광고 소스에 보내 요청을 처리하는 데 가장 적합한 광고 소스를 찾을 수 있습니다. 즉 미디에이션은 여러 광고 네트워크를 한 데 모..

👩🏻‍💻 TIL 2023.05.13

Failed to prepare the device for development. This operation can fail if the version of the OS on the device is incompatible with the installed version of Xcode. You may also need to restart your Mac and device in order to correctly detect compatibility.

갑자기 iOS 폰을 빌드하다가 이런 에러를 마주쳤다. 이 오류는 iOS 디바이스를 개발할 준비를 하지 못했다는 것을 나타낸다. 이 문제는 Xcode의 설치된 버전과 iOS 디바이스의 운영체제 버전이 호환되지 않을 때 발생할 수 있다. 이 경우, Xcode를 업데이트하여 호환성을 보장하거나, iOS 디바이스의 운영체제 버전을 업데이트하여 호환성을 보장해야 한다. 이게 아니라면 Mac 및 디바이스를 다시 시작하여 호환성을 올바르게 감지할 수도 있다. 불현듯 최근에 iOS 를 업데이트했던 것이 생각났고 Xcode 를 업데이트할 수 밖에 없는건가.. 하는 좌절감이 들었다. Xcode 의 iOS 디바이스 호환성을 확인할 수 있는 링크 > https://developer.apple.com/kr/support/xco..

👩🏻‍💻 TIL 2023.05.08

[TIL] UIView, UIViewController, Delegate

본 블로그 글은 chatGPT 가 준 코드와 iOS 개발 기초 개념들을 chatGPT 를 통해 공부한 글입니다. ChatGPT 90%, 기타 블로그 10% 참고하여 틀린 내용이 있을 수도 있습니다. 틀린 내용 있을 시, 지적해주시면 감사하겠습니다. UIView 와 UIViewController 에 대한 정의를 살펴봅시다. UIView 와 UIViewController UIView 이는 화면을 구성하는 요소들의 기본 클래스이며, 위치와 크기를 갖는 사각형으로, 배경색을 가지고 있고 문자나 이미지 등의 컨텐츠를 가지는 것이 가능합니다. • Label, Image, Button, 기타 인터페이스 요소를 표시하려면, UIKit Framework가 제공하는 뷰 하위클래스를 사용하면 됩니다. UIViewContro..

🦜 Swift 2023.05.05

[iOS] weak var

React 와 Flutter 를 경험해 본 나는 weak var 부터 보자마자 굉장한 낯설음을 느꼈다. 이에 대해 weak var 부터 모르는 것 하나하나 chatGPT 에 물어보았다. 온전히 chatGPT 를 통해 공부해서 정리한 내용을 기록해본다. weak var 선언하는 이유 iOS 개발에서 `weak var`로 선언하는 이유는 메모리 관리와 관련이 있습니다. Swift에서 메모리 관리는 ARC (Automatic Reference Counting)에 의해 처리됩니다. ARC는 인스턴스가 얼마나 많은 참조자를 가지고 있는지 추적하고, 해당 인스턴스가 더 이상 참조되지 않을 때 인스턴스를 자동으로 해제하여 메모리를 해제합니다. 일반적으로 iOS 애플리케이션에서는 강한 참조(`strong referen..

🦜 Swift 2023.05.04

[Dart] mixin

mixin 은 여러 클래스 계층 구조에서 클래스 코드를 재사용하는 방법입니다. 무슨 말인지 이해 안되실 수 있습니다. (괜찮습니다! 저도 그랬으니까요) 천천히 mixin 이 왜 등장하였는지, 다른 클래스와는 어떻게 다른지 저와 같이 한 번 정리해보며 알아보겠습니다!! 1. mixin 등장 배경 class Player { void play() { print("경기하는 중..."); } } class BasketBallPlayer extends Player{ @override void play() { super.play(); print("농구경기 하는 중..."); } } 위와 같이 Player 부모 클래스를 상속받는 BasketBallPlayer 자식 클래스가 있습니다. 여기서 BasketBallPlaye..

🐦 Flutter 2023.04.09

AES-256 암호화

회사 프로젝트에서 AES-256 암호화 방식을 사용하여 다른 업체와 유저 정보를 주고 받아야 하는 업무가 있었다 좀 더 자세히 말하자면 다음과 같은 과정이 진행되어야 했다 Client : 유저 정보를 AES-256 암호화하여 @@업체의 url 의 parameter 에 포함시켜 웹뷰로 띄움 @@업체 : 유저의 액션을 받을 시, 유저의 정보를 우리 Backand 에 request parameter 에 담아서 전달 (유저의 정보는 Client -> @@업체 -> 백엔드 이렇게 넘어가게 된다는 뜻) Backand : @@업체에서 받은 유저 정보를 AES-256 복호화하여 유저의 정보를 파악 가능 업체의 요구사항은 다음과 같다 UserKey 값은 매체사 회원의 개인정보 및 중요한 회원정보 값이 그대로 넘어오는 것..

🐦 Flutter 2023.04.01

Base64 인코딩

유니코드의 등장 배경 아스키코드가 영문 알파벳을 사용하는 대표적인 문자 인코딩이라면, 유니코드는 전 세계의 모든 문자를 표현할 수 있는 산업 표준이다. 좀 더 자세히 차이점을 알아보자 1바이트로 구성되어 있는 아스키 코드는 8비트(==1바이트) 중 7개의 비트만 사용한다. 나머지 1비트는 Parity Bit이라고 불리는 오류 체크를 위한 비트로 사용한다. 예를 들어 아스키 코드 65 인 문자 "A" 는 이진법으로 1000001 로 나타낼 수 있다 알파벳을 포함, 영문 키보드로 입력할 수 있는 모든 기호들이 아스키 코드로 할당되어 있다. 매우 단순하고 간단하여 많은 곳에서 사용되었다. 하지만, 아스키 코드는 7개의 비트만을 사용하므로 총 2^7 = 128개의 부호밖에 나타낼 수없다. 이를 보완하기 위해 8..