본문 바로가기

ios30

WWDC 2024 힙메모리 분석하기 00:00 - Introduction힙 메모리는 App에 의해 직간접 적으로 사용되는 메모리 이다개발자가 제어하고 최적화 할 수 있다.앱의 레퍼런스 타입이 저장된다.앱 메모리 제한에 포함되있어서 관리하는게 중요하다이 세션에서는 힙 메모리 측정 및 감소에 대해서 알아본다.우리는 5가지 주제에 대해서 알아본다힙 메모리 측정힙 메모리 일시적인 증가힙 메모리 지속적인 증가메모리 누수 잡기런타임 성능 개선01:05 - Heap memory overview힙메모리는 뭐고 어떤 툴을 사용하여 힙 메모리를 측정할 수 있을까?힙을 이해하려면 앱의 전체 가상 메모리 내에서 컨텍스트에 맞는 위치를 확인해야 한다앱이 시작되면 가상 메모리의 빈 주소 공간을 얻는다.앱이 구동 중일 땐 Stack 영역을 통해 각 쓰레드의 로컬 변.. 2024. 7. 9.
AWS Amplify 로 iOS 풀스택 Todo 앱 개발하기 AWS Amplify는 모바일 및 프론트 웹 개발자가 AWS에서 구동되는 풀스택 앱을 개발할 수 있게 도와주는 서비스 이다. 장점으로는 혁신적인 앱 개발: Amplify Library를 통해 Auth, AI/ML 등을 단 몇 줄의 코드로 개발할 수 있다. 몇 분만에 백엔드 구성: AWS S3나 Amazon Congito와 같은 AWS 서비스를 사용하여 회원가입, 스토리지, API 등의 백엔드를 자동으로 구성할 수 있다. 특히 Amplify CLI를 통해 간단한 명령으로 앱을 위한 백엔드를 개인화 할 수 있다. 편리한 배포 및 확장: AWS Amplify콘솔에서 비즈니스 성장에 따라 가용성을 수정할 수 있다. 몇 분 만에 확장 가능한 정적 웹 사이트 및 웹앱 배포가 가능하다. 자세한 내용은 서비스 페이지에.. 2020. 9. 3.
🎥 iOS 비디오 재생, 녹화, 병합 튜토리얼 (1) [출처] How to Play, Record and Merge Videos in iOS and Swift Learn the basics of working with videos on iOS with AV Foundation in this tutorial. You’ll play, record and even do some light video editing! www.raywenderlich.com 목표 비디오 선택 후 재생 비디오 녹화 후 저장 비디오 합치기 기본화면구성 버튼3개 stackview 로 그냥 감쌈 vertical, horizontal center 재생할 비디오 목록에서 선택 import AVKit import MobileCoreServices AVKit: AVPlayer에 접근할 수 있음(선.. 2020. 8. 31.
iOS 영상편집 앱 개발을 위한 레퍼런스 모음 목표: 애플 펜슬을 이용한 영상편집앱 (자세한 내용은 비밀 쉿) 비디오 재생 비디오 편집 비디오 위에 레이어 추가 후 병합 인코딩 레이어에 애플펜슬로 드로잉 키워드 AvFoundation CoreMedia PencilKit UIVideoEditorController AVKit 레퍼런스 - Video https://www.raywenderlich.com/6236502-avfoundation-tutorial-adding-overlays-and-animations-to-videos AVFoundation Tutorial: Adding Overlays and Animations to Videos In this AVFoundation tutorial, you’ll learn how to add overlays a.. 2020. 8. 30.
Design Pattern - Adapter Pattern Adapter Pattern Adapter pattern은 행위 패턴으로 상호 호환이 안되는 타입을 연결해 주는 패턴이다. 4개의 부분이 있다. Adapter를 사용하는 객체: 새로운 프로토콜에 의존하는 객체 새로운 프로토콜: 사용을 위해 필요한 프로토콜 legacy Object: 프로토콜이 만들어 지기 전에 원래 있던 객체, 수정될 수 없고 직접적으로 integrate 할 수 없는 객체 Adapter: 프로토콜을 준수하면서 legacy object 와 상호작용 하기 위해 만들어진 객체 실물의 어댑터의 가장 좋은 예시는 아이폰이다. 3.5mm 헤드폰 단자가 없어서 어댑터를 통해 라이트닝 단자에 연결해야 한다. 두개의 요소를 알맞게 연결해 주는 것이 Adapter Pattern 의 핵심이다. 안드로이드에서.. 2020. 8. 30.
iOS 앱 이름 한국어 설정 아무 생각없이 Xcode 의 Display Name 을 한글로 적었다 에러가 났다. 에러 내용 링크: http://codershigh.dscloud.biz:30004/t/simulator-this-app-could-not-be-installed/258 info.plist 에 관한 오류인거 같아서 한참을 헤맸는데 그냥 Display 이름을 영어로 바꿔주니 해결되었다. 이 참에 한국어로 현지화 하는 방법을 간단하게 정리해본다. Xcode 에서 Project -> Localizations 로 이동 + 버튼으로 Korean 추가 추가된거 확인할 수 있다. (Main 과 LaunchScreen) 우리는 Info.plist 에 대한 strings 파일을 만들어 줘야한다. 파일 이름은 : InfoPlist.strin.. 2020. 8. 29.
[Alamofire_5] 이미지 업로드 예제 코드 개발하는 앱에서 이미지 업로드가 있었다. Alamofire 4로 구현해봤는데 Alamofire 5 에서 많이 달라진것 같다. 메모해놔야겠다. Alamofire 4 코드 func updateProfileImage(_ image : UIImage){ let parameters: Parameters = [ "token" : UserDefaults.standard.string(forKey: "userToken") ?? "", "uuid" : UIDevice.current.identifierForVendor?.uuidString.lowercased() ?? "" ] let imageData = image.jpegData(compressionQuality: 1)! // Start Alamofire Alamofire.. 2020. 8. 28.
[앱 기획] Sandbox 목표 샌드박스 도입 이유를 이해한다. 샌드박스 환경에서의 제약사항들을 안다. iOS 는 보안으로 유명하다. 백그라운드 프로세스를 적극적으로 관리함 샌드박스 때문 Unix chroot로 실행할 수 있는데 이렇게 실행하면 본인이 포함되어 있는 폴더를 root 폴더로 인식한다. 샌드박스란 Folder와 같은 뜻으로 root directory를 뜻한다. 결국 어플리케이션은 본인이 루트 디렉토리이기 때문에 상위 디렉토리에 대한 정보가 1도 없게된다. 이거때매 조금 화났던게 아이폰에 음악이나 동영상 넣을때 iTunes 로 특정 앱에다가 집어 넣어야 했다. 드디어 이유를 알았다. 제 아무리 빈폴더 만들어서 넣어도 음악 동영상 앱에서는 파일이 없다고 뜨더니 샌드박스 때문이였다. chroot Jail 때문에 아이폰 해킹.. 2020. 8. 24.
Design Pattern - Model View ViewModel Pattern 중급(책에 따르면) 디자인 패턴 시작이다. 이전까지 배운 기초 패턴은 다음과 같다. MVC Delegation Strategy Singleton Memento Observer Builder 어떤 패턴인지 알고 사용한 경우도 있었고 코드 컨벤션인줄 알고 아 이렇게 쓰나보다하고 썼던 코드가 디자인 패턴이였구나 알게된 경우도 있었고 써보지도 않았고 처음 알게된 경우도 있었다. 그럼 중급 패턴으로 한번 가보자 MVVM - Model View ViewModel MVVM은 각각의 객체들을 3가지 그룹으로 나누는 Structural design pattern 이다. Model: 앱 데이터를 담고있다. 대부분 구조체이거나 단순한 class 로 구성된다. Views: 시각적인 요소와 스크린의 control를 담당한다. .. 2020. 8. 24.
Vapor 서버 만들기 - Ubuntu+Swift+Vapor+Github+Supervisor(5) Supervisor 를 안다니 서버가 자꾸 꺼져서 해결해야겠다. 이전에 에러는 Spawn 에러가 났었는데 로그가 남는다 해서 로그를 보았다. 020-08-16 05:47:08,840 INFO exited: hello (exit status 0; not expected) 2020-08-16 05:47:11,846 INFO spawned: 'hello' with pid 7321 2020-08-16 05:47:11,913 INFO exited: hello (exit status 0; not expected) 2020-08-16 05:47:12,914 INFO gave up: hello entered FATAL state, too many start retries too quickly 2020-08-16 08:.. 2020. 8. 16.
Design Pattern - Singleton Pattern Singleton Pattern - 싱글톤 패턴 class 가 하나의 instance 만 가지도록 제한한다. 모든 class 에 대한 reference 는 하나의 같은 class 에 대한 instance를 참조한다. (Single) iOS 앱 개발에서 겁나 자주 쓰이고 Apple 이 광범위하게 쓴다. 다른 instance 를 생성하는 shared singleton instance를 제공하는 Singleton Plus 패턴도 자주 쓰인다. Singleton Pattern 언제 사용해야 할까? 하나 이상의 동일 class 의 instance 를 가지게 되면 문제가 생길때 로직상으로 하나 이상의 동일 class 에 대한 instance 를 가지면 안될때 Singleton Plus Pattern 언제 사용해야 .. 2020. 8. 9.
Design Pattern - Strategy Pattern Strategy Pattern Strategy Pattern 은 런타임에 set 되거나 switch 될 수 있는 interchangeable 한 객체의 집합을 정의한다. Who (Object Using a Strategy): interchangeable 해야 하는 객체가 담당할 수 있다. iOS 앱에서 이 부분은 view controller 가 담당한다. What (strategy protocol): 모든 strategy 가 반드시 구현해야할 메소드를 정의한다. How (Strategies): strategy protocol 을 준수하는 객체들이다. 언제 사용해야 할까 두개 이상의 다른 behavior이 interchangeable 해야 할 때 사용한다. 이 패턴은 delegation pattern 과 .. 2020. 8. 7.
iOS: Repository pattern in Swift [출처] iOS: Repository pattern in Swift A design pattern to abstract data sources from your application medium.com Repository Pattern 리포지토리 패턴은 디자인 패턴으로 데이터의 추상화를 제공하여 어플리케이션이 추상화된 인터페이스로 작업할 수 있게 해준다. 즉 데이터 출처에 관계없이 동일한 인터페이스로 어플리케이션이 데이터를 사용할 수 있게 해준다. 장점으로는 결합도를 낮출 수 있다. 도메인 객체를 persistence ignorant 하게 할 수 있다. 정의된 인터페이스를 구현하는 mock에 DI 할 수 있으므로 테스팅하기 쉽다. 글에서 작성된 예시를 보자면 Tiendo iOS 앱에서 리포지토리 패턴을 .. 2020. 8. 7.
Reusable Horizontal UICollectionView in UITableView 해커톤을 위해 토이 프로젝트를 하고 있다. 디자인이 슬슬 나오기 시작한다. 오늘 조진 GUI 화면 구현이 조금 복잡하여 블로그에 정리해보려 한다. 기록하려는 것이기 때문에 설명 불친절 주의☠️ Reusable Horizontal UICollectionView in UITableView 라는 뜻은 아래의 스크린 샷과 같은 UI를 내가 표현해본 것이다. 큰틀로 UITableView를 유지하면서 중간중간 Cell 에 Horizontal 하게 Scroll 될 수 있는 UICollectionView 를 넣어주는 것이다. 처음엔 그냥 UIScrollView 에 UIVIew로 나눠서 하나씩 UICollectionView 를 넣으려 했다. 문제는 생각보다 저 UICollectionView 가 똑같이 사용되는 UI 가 .. 2020. 8. 3.
Dreamin iOS 맥북프로 언박싱! Dreamin iOS Academy 에 합격하고 맥북이 오기를 기다리고 있었다. 소포가 하나 왔다. 안에는 맥북과 웰컴키트가 있었다. 그리고 미션도 있었다. 맥북 언박싱 영상 을 찍어야 했다. 이런거 잘 못하는데,, 그래도 해야된다. 그게 약속이니까 그래서 찍은 영상이다. 생애 최초이자 최후의 언박싱 영상 이렇게 하는게 맞는지 모르겠다. 아무튼, 웰컴 키트 구성품에는 티셔츠, 잔, 호두과자, 샴페인잔이 있었다. OT 때 같이 언박싱 한다하여 따로 올리진 않는다. 화상으로 연회같은걸 하려나 보다. 중요한 받은 맥북 사양은 이렇다. MacBook Pro 13형 - 제품 사양 프로세서 속도, 하드 드라이브 용량, 메모리 등 MacBook Pro에 대한 전체적인 제품 사양입니다. www.apple.com 확실히.. 2020. 7. 31.
한화 Dreamin iOS Academy 최종합격 후기 Academy > Connect your Dream > dreamin | 드림인 dreamin iOS Academy dreamin.career 과정 자기소개서 및 서류 제출 1차 온라인 테스트 2차 온라인 면접 합격 지원하게 된 계기 평소에 iOS 개발자를 목표로 하고있다고 내 주변 사람들은 다 알고있다. 그래서 그런지 iOS 개발 직군쪽 채용이나 교육과정과 같은 좋은 기회가 있으면 내게 공유해 주시는 편이다. 무척 감사하다. 지인중 한분이 이 과정을 소개해 주셨고 졸업하기 전 iOS 관련 교육과정을 경험해 보고 싶었던 나는 고민없이 지원하게 되었다. (혼자 iOS 개발을 배웠는지라, 커리큘럼이 있는 교육과정을 받아보고 싶었다.) 자기 소개서 및 서류 작성해야하는 글의 내용은 인턴이나 신입 채용을 위한 .. 2020. 7. 29.
RxSwift: Hello RxSwift!🖐 What is RxSwift? library for composing asynchronous and event-based code by using observable sequences and functional style operators, allowing for parameterized execution via schedulers simplifies developing asynchronous programs by allowing your code to react to new data and process in a sequential, isolated manner 왜 RxSwift 가 필요한가 parallel 한 코드를 작성하는 건 원래 힘들지만 특히 같은 데이터를 이용하는 병렬 코드를 작성하는건 정말 .. 2020. 7. 8.
WWDC2020 키노트 후기 (정리) WWDC 2020 방구석에서 참여하였다.WWDC는YoutubeApple 홈페이지Developer App에서 시청할 수 있었다. 그냥 보면 놓치는 부분도 있을 것 같아서 함께 볼 수 있는 이벤트를 신청했다. 13분 정도 모여서 얘기를 나누며 2시까지 기다렸다. 나는 쭈구리라 듣고만 있었다. @주의: 키노트를 시청하며 쓴 글입니다. 두서가없고 맥락이 없으며 주로 제목과 이미지로 되있습니다. 키노트를 직접 보시는걸 추천드립니다 시작 전 여기 미모지들이 접속해 있는 실제 개발자라고 한다. 대박 시작전 2가지를 언급했다. App library자동으로 한페이지로 홈화면을 만들어 준다Widget여러 디자인과 사이즈의 위젯을 설정할 수 있다. 홈화면에 위젯을 위치시킬 수 있다.Picture in Picture Siri.. 2020. 6. 23.
RxSwift를 사용한 비동기 프로그래밍 #3 https://github.com/iamchiwon iamchiwon - Overview https://iamchiwon.github.io http://www.makecube.in - iamchiwon github.com 기획서만 나오고 디자인과 백엔드가 나오기 전에 개발해보자 [기획내용] 메뉴 + - count 요소 메뉴에는 이름과 가격이 있다. clear 로 전부 취소할 수 있다. 전체 가격을 표시할 수 있다. 등등 1. ViewModel 을 만든다. import Foundation // View를 위한 모델 : ViewModel struct Menu { var name : String var price : Int var count : Int } 2. TableVIew 에 ViewModel 을 집어넣.. 2020. 5. 29.
RxSwift를 사용한 비동기 프로그래밍 #2 iamchiwon/RxSwift_In_4_Hours RxSwift, 4시간 안에 빠르게 익혀 실무에 사용하기. Contribute to iamchiwon/RxSwift_In_4_Hours development by creating an account on GitHub. github.com [2교시] RxSwift 활용하기 - 쓰레드의 활용과 메모리 관리 Stream의 분리 및 병합 [merge] ReactiveX - Merge operator RxScala implements this operator as flatten, flattenDelayError, merge, and mergeDelayError. merge takes a second Observable as a parameter and merge.. 2020. 5. 28.
RxSwift를 사용한 비동기 프로그래밍 #1 iamchiwon/RxSwift_In_4_Hours RxSwift, 4시간 안에 빠르게 익혀 실무에 사용하기. Contribute to iamchiwon/RxSwift_In_4_Hours development by creating an account on GitHub. github.com [1교시] 개념잡기 - RxSwift를 사용한 비동기 프로그래밍 textview 에 json 데이터를 띄우는 함수 버튼을 누르면 animation이 실행된다. @IBAction func onLoad() { editView.text = "" setVisibleWithAnimation(activityIndicator, true) let url = URL(string: MEMBER_LIST_URL)! let data = tr.. 2020. 5. 27.