전체 글 94

객체 선언과 동시에 초기화 = "메모리 남아도냐"

만약에 변수를 선언과 동시에 초기화한다면? import UIKit class ViewController: UIViewController { var subject = UILabel() // 선언과 동시에 초기화 override func viewDidLoad() { super.viewDidLoad() self.subject.frame = CGRect(x: 100, y: 100, width: 250, height: 300) self.subject.backgroundColor = .systemRed self.view.addSubview(subject) } } 이렇게 해도 상관은 없지만? 레이블의 인스턴스 생성시기가 문제임 선언과 초기화를 분리하여 viewDidLoad() 메소드 내에 초기화 구문을 작성한다면? ..

iOS/UIKIT 2024.01.29

인스턴스 생성 및 소멸 1편

초기화 (initialization) 클래스와 구조체 또는 열거형의 인스턴스를 사용하기 위한 준비과정 초기화가 완료된 인스턴스는 사용 후에 소멸 시점이 오면 소멸 인스턴스 생성 이니셜라이저(initializer) 정의하면 초기화 과정 구현 가능 (이니셜라이저는 반환값 없음) "init" 키워드를 사용하여 구현 기본적인 형태의 이니셜라이저 class SomeClass { init() { // 초기화할 때 필요한 코드 } } 프로퍼티 기본값 구조체와 클래스의 인스턴스는 옵셔널 저장 프로퍼티를 제외하곤 모든 저장 프로퍼티에 적절한 초기값을 할당해야 함 구조체와 이니셜라이저 struct Market { var name: String init() { name = "E-Mart" // name의 초기값 할당 } }..

iOS/Swift 2024.01.29

CGPoint + CGSize = CGRect

뷰의 위치와 CGPoint iOS에서 뷰는 기준점에 의해 위치가 결정 (기준점: 디바이스 화면 내 사각형 좌측 꼭지점) 기준점을 (0, 0)으로 하여 x, y축 으로 얼마큼 떨어져 있는가를 표현 파란색 사각형의 좌측 상단 꼭지점이 화면 내 좌측 상단 꼭지점으로부터 얼마나 떨어져 있는가를 표현 CGPoint 사용 let location = CGPoint(x: 100, y: 200) 뷰의 크기와 CGSize 크기를 표현하는 방법 CGSize 사용 var size = CGSize(width: 150, height: 200) CGRect 뷰의 위치와 크기를 동시에 가지는 객체의 정보 표현 CGRect 사용 let point = CGPoint(x: 100, y: 100) let size = CGSize(width..

iOS/UIKIT 2024.01.28

메모 상세 화면 구현

메모 목록 화면에서 선택한 화면의 전체 내용을 볼 수 있는 상세 화면 구현 MemoReadVC 파일 내에 MemoData 타입의 param 변수 생성 viewDidLoad 메소드 내에 아래 코드 구현 - param 변수의 값을 이용하여 화면 객체에 콘텐츠 출력 - 날짜 포맷을 통해 원하는 방식으로 변환 - 작성한 시간을 네비게이션 타이틀에 할당 MemoListVC 클래스내에 tableView(_: didSelectRowAt:) 메소드 구현 여기까지 하면 메모 앱을 작성하고 보는 것까지 구현함 앞으로 해볼 것 1. 삭제, 업데이트 기능 추가 2. 탭바를 추가하여 홈화면, 설정화면 넣어보기

Project/Memo 2024.01.26

메모 목록 화면 구현

UITableViewController 클래스를 상속받아 구현 핵심 내용 앱 델리게이트의 memoList 배열에 저장된 데이터를 읽어와 테이블 뷰를 구성하는 것 먼저 MemoListVC.swift 파일 내에 앱 델리게이트 객체를 참조할 수 있도록 멤버 상수를 정의 tableView(_ : numberOfRowsInSection: ) 메소드에 테이블 뷰 셀 개수를 결정하는 코드 구현 tableView(_: cellForRowAt:) 메소드를 통해 개별 행을 어떻게 구성할지 코드 구현 테이블 객체의 재사용 큐에서 프로토타입 셀의 인스턴스를 보면 iOS 시스템 리소스의 절야과 퍼포먼스를 위해 새로운 테이블 셀을 만들기보다 이미 만들어진 셀을 재사용할 수 있도록 처리 Date() 타입의 날짜 정보를 String..

Project/Memo 2024.01.26

메서드

함수 1편 (함수 정의 및 호출) :: 밤새는 iOS 탐험기 (tistory.com) 함수 1편 (함수 정의 및 호출) 함수와 메서드 기본적으로 함수와 메서드는 동일, (상황이나 위치에 따라 용어가 다름) 메서드: 구조체, 클래스, 열거형 등 특정 타입에 연관되어 사용하는 함수 함수: 모듈 전체에서 사용하는 explorer89.tistory.com 함수와 메서드 기본적으로 함수와 메서드는 동일, (상황이나 위치에 따라 용어가 다름) 메서드 구조체, 클래스, 열거형 등 특정 타입에 연관되어 사용하는 함수 class someClass { func runSomething() { print(" Method runSomething") } } 함수 모듈 전체에서 사용하는 함수 func runSomething() {..

iOS/Swift 2024.01.26

메모 작성 화면 구현 (메모 저장)

메모 내용 및 이미지를 선택한 뒤에 저장 버튼을 눌렀을 때 메소드 구현 입력된 값을 저장하는 순서는 다음과 같음 1. 메모 내용이 입력되지 않았을 경우 대비, 경고창 띄움 ☆ 경고창에 버튼을 추가하고 싶다면? ☆ 원하는 버튼의 개수 만큼, UIAlertAction 클래스 객체를 생성 -> 등록 진행 2. 데이터를 저장할 MemoData 객체 생성 제목, 내용, 이미지, 작성 시간을 MemoData 객체에 전달 3. 앱 델리게이트 인스턴스를 불러온 뒤, memoList 배열 변수에 MemoData 객체 추가 UIApplication.shared는 UIApplication 객체의 인스턴스를 참조하기 위해 제공되는 타입 프로퍼티 UIApplication 객체는 직접 인스턴스 생성 불가, 시스템에 의해 생성된 ..

Project/Memo 2024.01.26

메모 작성 화면 구현 (카메라, 앨범 접근)

스토리보드에 정의된 메모 작성 화면 (아래 폭포수 이미지는 해당 위치에 이미지가 배치된다는 걸 알려주기 위해 일부러 넣음) 사용자가 카메라 버튼을 눌렀을 때 호출되는 액션 메소드 구현 // 카메라 버튼을 클릭했을 때 호출되는 메소드 @IBAction func pick(_ sender: Any) { let alert = UIAlertController(title: nil, message: "이미지를 가져올 곳을 선택해주세요", preferredStyle: .actionSheet) // 이미지 피커 인스턴스를 생성 let picker = UIImagePickerController() picker.delegate = self picker.allowsEditing = true alert.addAction(UIA..

Project/Memo 2024.01.26

메모 앱 기능 구현 (데이터 모델 작업)

간단히 메모 기능을 가진 앱을 개발해보려고 함 그럼 가장 먼저 해야 하는 일은 "데이터 모델"을 정의하는 것 (단, UI는 스토리보드로 미리 구현했다는 가정하에 진행) 여기서 데이터 모델은 사용자가 입력한 데이터를 저장 및 화면 출력의 용도로 형식이 있는 건 아니지만, 주로 클래스로 정의 데이터 모델을 작성하는 파일은 기본 파일 형식인 Swift File을 생성하여 파일 이름 설정 후, 파일 안에 작성 메모에 필요한 데이터 목록 1. 메모 구별값 2. 제목 3. 내용 4. 이미지 5. 작성일 import UIKit class MemoData { var memoIdx: Int? var title: String? var contents: String? var image: UIImage? var regdate..

Project/Memo 2024.01.26

리소스 접근 권한 설정 (카메라, 앨범)

iOS 10부터 디바이스의 개인 리소스 접근 제한이 강화됨 개발하려고 하는 앱의 앨범이나 카메라에 접근하려면 그에 맞는 권한이 필요함 Info.plist 파일을 통해 설정 Information Property List 항목에 새로운 항목 2개를 추가 새롭게 추가된 2개의 프라이버시 키는 앱이 사용자의 카메라나 앨범 리소스에 접근하기 위해 필요한 권한 이 설정은 접근 권한에 대한 설정일 뿐, 해당 설정을 통해서 카메라나 앨범을 실행시킬 수는 없음 단지, 프라이버시 키를 추가하지 않고 실행한다면? 오류 발생

iOS/UIKIT 2024.01.25