전체 글 117

swift UserDefaults 대해 공부해보자.

스위프트에는 디스크에 저장할 수 있는 프레임 워크는 크게 두가지 나누는데 그중 하나라고 생각하면된다. 그리고 UserDefaults는 코어데이터 보다 간랸하게 사용이 가능하나  단점이 있다. 복잡한 로직에는 사용이 불가능하며 보통 키값을 받는 정도에만 사용하는게 좋다고 이야기한다.  클래스나 스트럭트 사용할때는 제이슨을 사용해서 하는 방법이 있긴하나  오류의 원인이 될 수 있으니 내가 만드는 앱의 기준을 잘 보고 둘 중에 어떤걸 사용할지 결정하면 될 것 같다.  그 기준은 키값이나 클래스에 서브클래스 까지 들어가면 UserDefaults 사용하기 힘들지 않을까 생각한다.  간략하게 정의하면 UserDefaults 또한 디스크에 데이터를 저장할 수 있게 돕는 도구.CoreData 보다 사용성이 간단.key..

카테고리 없음 2024.07.16

swift 메모리 관리에 대해 공부해보자

오늘 데이터 메모리에 대해 간략하게 공부해보았다.  우리가 잘 아는 램이랑 하드 디스크 차이에 대해 공부했다고 생각하면 될 것 같다.  메모리는 머고 디스크 기본 개념은 뭘까?  메모리는 - 휘발성 기억장치 ~ 데이터가 필요없으면 지워버리고 필요하면 올리고 하는장치라고 생각하면 되고 디스크는 - 저장장치라고 생각하면 된다. 지금 당장은 안쓰지면 지워지면 안되는것 전화번호목록이던지 친구목록 등 등 내가 계속 가지고 있어야 될 정보라고 생각하면 될것이다.  자세히 설명하면 메모리는  ▪️ 메모리일반적으로 RAM 을 말하는 경우가 많다.맥북에서도 몇 GB 짜리 RAM 을 사용하는지 볼 수 있다.RAM 은 휘발성 메모리이다. 즉, 데이터를 영구적으로 저장하지 않는다. 일시적인 저장에 사용한다.→ 앱도 결국 데이..

카테고리 없음 2024.07.16

swift 캡처 참조 타입에 대해 배워보자(강한참조, 약한참조, 순환참조)

캡쳐 리스트캡쳐링을 하는 값의 참조 규칙을 캡쳐리스트를 통해서 정해줄 수 있습니다.클로저의 캡쳐리스트 내에 정의하면 캡쳐링할 때 본래의 타입에 맞게 캡쳐링되도록 사용되게 할 수 있습니다.즉, 값 타입은 클로저가 생성될 시점의 값이 copy되어지고,참조 타입은 클로저가 호출되는 시점에 참조되어 사용되도록 사용되어지게 합니다.캡쳐리스트는 클로저 in 앞에 [ ] 내에 넣는 형식으로 작성합니다. 값타입 참조타입 예시 var x = 0var y = 0let someClosure = { [x] in print("in closure.x: \(x)") print("in closure.y: \(y)")}x = 20y = 20someClosure()//in closure.x: 0//in closure.y: 2..

카테고리 없음 2024.07.16

swift 뷰콘트롤러 생명주기 알아보자

UIKit 앱의 뷰 계층을 관리하는 개체입니다.한 개의 페이지는 반드시 한 개의 UIViewController 를 가짐.UIViewController 내부에 UIView, UIButton, UIScrollView 등 UIKit 의 UI 클래스들을 배치하며 화면을 구성한다.iOS 의 대표적인 생명주기 2가지앱 생명주기 (App Lifecycle) → [1-3. Xcode 빌드] 강의에서 공부했음.ViewController 생명주기 (ViewController Lifecycle)ViewController Lifecycle init - 생성자  leadView - 처음 가지는 뷰(무조건 있어야지 뷰가 생성된다) viewDidLoad - 뷰가 메모리에 올려질때 사용( 이건 자주 봤을 것이다 뷰 컨트롤러 만들면 ..

카테고리 없음 2024.07.15

swift 오버라이드 , 슈퍼 공부해보자

프로젝트를 처음 만들어봤을때 가장먼저 맞이해주는 override 많이들 보셨죠 ? 가장 처음 반겨줬던 override아무 생각없이 넘어갔는데 오늘은 override에 대해 한번 파봅시다!!  오버라이드 (override) 일단 공식문서의 내용을 요약해서 먼저 한번 볼까요 상위클래스로부터 상속받은 메서드, 프로퍼티들을 하위 클래스에서 재정의하는 것 살짝 알듯 말듯 하네요. 말보단 코드로 먼저 보시죠 !!   눈으로 보는것 보다 Playground에 따라 쳐보시면 이해가 더 잘갑니다먼저 Student라는 class를 만들어볼게요.class Student { func sayHello() { print("안녕 나는 학생이야") }} 호출을 하면 어떻게 나오는지 볼까요 ?let studen..

카테고리 없음 2024.07.15

swift 네비게이션 화면 첫화면으로 돌아가는 코드 작성해보자

네비게이션 연결하다보면 특정 버튼을 누르면 첫화면으로 돌리고 싶을 경우가 많을 것이다.계속 앞으로 쌓아 나가도 되지만 필요없는 뷰를 계속 만들 필요는 없다고 생각한다.  그래서 보통 푸쉬 팝을 사용한다.   NSLayoutConstraint.activate([ Button.topAnchor.constraint(equalTo: view.topAnchor, constant: 150), Button.trailingAnchor.constraint(equalTo: view.trailingAnchor, constant: -10), Button.heightAnchor.constraint(equalToConstant: 30), Button.widthAnchor.constraint(..

카테고리 없음 2024.07.15

swift 스토리 보드 코드로 연결하기

# UINavigationController를 코드로 구현해보자 위와 같이 간단한 Navigation을 만들어 보겠습니다! 원리만 알면 다른 요소들은 추가하면 되니까 간단하게 구현해보도록 하겠습니다.                                           먼저 위와 같이 2개의 ViewController를 만들어 주세요. 하나는 부모뷰 (자식으로 이동할 수 있는 버튼 등을 구현해주세요.)하나는 자식뷰 (예제에서는 부모뷰와 구분하기 위해서 하나의 UILabel를 추가했습니다.)  iOS의 Navigation Control은 Stack구조로 생각하시면 됩니다.  Push로 새로운 자식뷰를 호출하고Pop을 통해 다시 부모뷰로 되돌아가는 구조입니다.그럼 당연하게도 Top에 있는 ViewCon..

카테고리 없음 2024.07.14

swift 독특한 크래쉬

최근 IOS 개발을 Swift로 배우며 여러가지 학습을 하던 중 독특한 크래쉬를 발견했습니다. 에러 로그가 안떠서 뭐지 ? 했는데 일단 해당 에러는 EXC_BAD_ACCESS (code : 1 , address : ~~~) 라고만 쓰여있고 다른건 안 써있더라구요. Thread 1이라니 메인스레드인건 알겠는데 과연 어디가 정확히 문제일까요?Thread 1: EXC_BAD_ACCESS열심히 구글링한결과 일단 이 에러를 찾기 위해서는 1. XCode 상단 Product 메뉴 -> [Scheme] -> [Edit Scheme] 탭을 클릭합니다.2. Run ->[Diagnostics] 탭에서 -> [Enable Zombie Objects] 체크박스를 체크하고 닫습니다. 그러고나서 다시 디버그를 하면 NSZombi..

카테고리 없음 2024.07.14

swift 로컬 푸쉬 알람 만들어보자

시작  일단 UserNotifications를 import해줍니다. 그러면 이제 UNUserNotificationCenter 클래스를 사용할 수 있습니다.(앱 또는 앱 확장에 알림 관련 작업을 관리하는 중앙 객체라네요 ㅎ) 구체적으로 어디에 사용하나~~ 1. 권한 요청 - 알람, 사운드, 뱃지와 상호작용할 것인지 권한을 요청할 수 있습니다. ㅎ 2. 알림이 전달된 후 사용자의 작업을 선언할 수 있습니다.3. 알림을 예약하여 전송할 수 있습니다.4. APN (Apple Push Notification Service)로부터 받은 알림을 처리합니다.5. Notification Center에 표시되는 이미 전달된 알림을 관리합니다.  이제 이 클래스를 Get하려면 current()를 쓰면 되요. 그리고 앱에서 ..

카테고리 없음 2024.07.14