SlideShare a Scribd company logo
Swift 도입기
Static Library에서 Dynamic Framework로 전환
D2 OPEN SEMINAR - Smart editor 3.0 swift 도입기 (static library에서 dynamic framework로 전환)
D2 OPEN SEMINAR - Smart editor 3.0 swift 도입기 (static library에서 dynamic framework로 전환)
D2 OPEN SEMINAR - Smart editor 3.0 swift 도입기 (static library에서 dynamic framework로 전환)
WWDC 2014, Swift 등장
iOS 개발자 반응은?
WWDC 2015
대세 언어, Swift!
2014 20162015
대세 언어, Swift 도전!
Objective-C 로 되어 있는
Legacy Code는 어떻게 하지?
Swift 와 Objective-C 함께 사용
할 수 있을까?
D2 OPEN SEMINAR - Smart editor 3.0 swift 도입기 (static library에서 dynamic framework로 전환)
그리고 열심히 공부하면서
Swift로 개발하기 시작하였습니다.
var width = selected?320:200
NSUInteger width = selected?320:200;
# Objective-C
# Swift
var width = selected ? 320:200
var width = selected?320:200
헛,
근데 우리는 Library 잖아.
CocoaPods 로 배포하던 SmartEditor 3.0
Swift 도입 후, 수많은 빨간색 느낌표를 만나게 되다.
Library
• a set of routines, external functions and variables
• static library (statically-linked library)
• dynamic library (shared library)
• frameworks (static, dynamic)
static library
• packaged into the code of the main executable
• linked at compile time
• only code
• images/assets/header files은 따로 배포
• 같은 Library 일지라도 실행파일별로 메모리에 로드
D2 OPEN SEMINAR - Smart editor 3.0 swift 도입기 (static library에서 dynamic framework로 전환)
dynamic library
• linked at runtime
• shared amongst multiple processes
• OS X :".dylib"
• Windows : ".dll"
• iOS에서는 일반적으로 지원하지 않는다.
D2 OPEN SEMINAR - Smart editor 3.0 swift 도입기 (static library에서 dynamic framework로 전환)
Apple은 왜
dynamic library를
iOS에서 금지시켰을까?
The reason is security.
• malicious code executing by a hacker
• unapproved features to an approved app.
• you could download and load it.
It's not a technical limitation,
but an App Store Policy limitation.
Frameworks
• a collection of code and resources to encapsulate
functionality
• Libraries only has executable code
• a framework is a bundle (Directory structure)
• dynamic libraries, headers and other resources.
D2 OPEN SEMINAR - Smart editor 3.0 swift 도입기 (static library에서 dynamic framework로 전환)
(static) Frameworks
• Before iOS8, only allowed static libraries for iOS.
• the idea of creating 'static frameworks'.
• static libraries with the convenience of bundling the
headers files along.
"iOS developers can now create dynamic
frameworks."
- New Features in Xcode 6, by Apple
D2 OPEN SEMINAR - Smart editor 3.0 swift 도입기 (static library에서 dynamic framework로 전환)
SmartEditor 3.0 for iOS
CocoaPods 로 배포 중
• static library 로 빌드하여 배포
• 리소스는 Main Bundle 에 복사
Swift를 포함한 코드는 static library 로 빌드가 불가능
• Swift standard runtime libraries 가 iOS에 비포함.
• App 빌드시점에 App Bundle에 runtime library를
복사
• Swift를 포함한 앱은 Objective-C Only 앱보다 용량
이 큰 이유
• runtime library가 없거나 버전이 다르면 Swift 를 포
함한 Framworks는 문제가 발생
D2 OPEN SEMINAR - Smart editor 3.0 swift 도입기 (static library에서 dynamic framework로 전환)
- CocoaPods 0.36 - Framework and Swift Support
"frameworks instead of static libraries by
specifying use_frameworks!"
Podfile
use_frameworks! 그후
1. Frameworks 로 전환이 안되는 다른 dependency 가 존재
• 네이버로그인
• ApiGatewayHMAC
2. 리소스가 모두 Framework Bundle에 존재
네이버로그인 라이브러리
• static library를 포함하여 배포 중으로 frameworks로 전
환이 불가능
• 서비스앱 (블로그, 포스트) 프로젝트에 수작업으로 static
Library와 UI코드/리소스를 추가
• SmartEditor 3.0에서는 delegate를 통해 로그인 모듈 접
근
Frameworks Bundle
• SmartEditor 3.0 에 포함되어 있는 리소스는 MainBundle이
아닌 Frameworkd Bundle에 존재
• + (NSBundle *)bundleForClass:(Class)aClass 를 통해
Framework Bundle에 접근
• [UIImage imageNamed:@""] 는 Main Bundle의 리소를
가져오도록 되어 있어 SEImage Class를 새로 만듬.
D2 OPEN SEMINAR - Smart editor 3.0 swift 도입기 (static library에서 dynamic framework로 전환)
Static Library Linking
Dynamic Library Linking
감 사 합 니 다.

More Related Content

PPTX
D2 OPEN SEMINAR - WWDC 핫 이슈
PPTX
The Future of C# and .NET Framework
PDF
개알못의 오픈소스이야기 - 이상준님
PDF
[MeetUp][2nd] 알아두면 쓸모있는 테라폼
PDF
제 5회 D2 CAMPUS SEMINAR - Swift로 만든 serverframework 개발기
PDF
iOS Modular Architecture with Tuist
PDF
Github 으로 학교 팀 프로젝트 하기
PDF
커뮤니티와 함께한 예비개발자 성장기- 조성수님
D2 OPEN SEMINAR - WWDC 핫 이슈
The Future of C# and .NET Framework
개알못의 오픈소스이야기 - 이상준님
[MeetUp][2nd] 알아두면 쓸모있는 테라폼
제 5회 D2 CAMPUS SEMINAR - Swift로 만든 serverframework 개발기
iOS Modular Architecture with Tuist
Github 으로 학교 팀 프로젝트 하기
커뮤니티와 함께한 예비개발자 성장기- 조성수님

What's hot (20)

PDF
[Tech meet up] 2018 프론트엔드 트렌드&인사이트
PDF
Dev team chronicles
PDF
[MeetUp][1st] 자동화를 왜 해야하나요
PPTX
C++ GUI 라이브러리 소개: Qt & Nana
PPTX
이제 온라인이다! 브라우저 안으로 들어온 Visual studio!
PDF
이클립스 플랫폼
PDF
온프레미스 쿠버네티스에서도 로드밸런서를 (w MetalLB)
PDF
형상관리 발표자료 안정민
PDF
기술 관심 갖기: 스타트업 기술 101 (Interested in Tech?: Startup Technology 101)
PDF
Spring Framework 튜토리얼 - 네이버 최영목님
PDF
모바일 개발자를 위한 ML Kit: Machine Learning SDK 소개
PDF
swig를 이용한 C++ 랩핑
PPTX
개발 방식을 바꾸는 15가지 기술
PPTX
Developing iOS with Rx, MVVM
PDF
[Ansible] open network automation
PDF
DevOps와 자동화
PPTX
MVC, MVVM, ReactorKit, VIPER를 거쳐 RIB 정착기
PDF
DevOps Demo
PDF
[네전따 27회] 네트워크 자동화 어렵지 않아요
PDF
[D2CAMPUS] Tech meet up ; iOS 개발편
[Tech meet up] 2018 프론트엔드 트렌드&인사이트
Dev team chronicles
[MeetUp][1st] 자동화를 왜 해야하나요
C++ GUI 라이브러리 소개: Qt & Nana
이제 온라인이다! 브라우저 안으로 들어온 Visual studio!
이클립스 플랫폼
온프레미스 쿠버네티스에서도 로드밸런서를 (w MetalLB)
형상관리 발표자료 안정민
기술 관심 갖기: 스타트업 기술 101 (Interested in Tech?: Startup Technology 101)
Spring Framework 튜토리얼 - 네이버 최영목님
모바일 개발자를 위한 ML Kit: Machine Learning SDK 소개
swig를 이용한 C++ 랩핑
개발 방식을 바꾸는 15가지 기술
Developing iOS with Rx, MVVM
[Ansible] open network automation
DevOps와 자동화
MVC, MVVM, ReactorKit, VIPER를 거쳐 RIB 정착기
DevOps Demo
[네전따 27회] 네트워크 자동화 어렵지 않아요
[D2CAMPUS] Tech meet up ; iOS 개발편
Ad

Similar to D2 OPEN SEMINAR - Smart editor 3.0 swift 도입기 (static library에서 dynamic framework로 전환) (20)

PDF
인프콘 2022 - Rust 크로스 플랫폼 프로그래밍
PDF
SOSCON 2017 - Backend.AI
PDF
RAD Studio 10.2 도쿄
PPTX
2022.08 멘토링 자료.pptx
PDF
AWS와 함께하는 무중단 배포 파이프라인 개선기 - 황성찬 (AUSG) :: AWS Community Day Online 2021
PDF
[AWS Community Day 2021] AWS와 함께하는 무중단 배포 파이프라인 개선기
PDF
[SwiftStudy 2016] 1장. Swift 소개
PDF
AWS CLOUD 2018- 보다 강력한 Serverless, AWS Lambda 기능 확장(안효빈 솔루션즈 아키텍트)
PPTX
TurboRepo
PDF
React native development
PDF
Hybrid App Platform - HyWAI 3.5
PPTX
[스프링 스터디 1일차] 오브젝트와 의존관계
PDF
효과적인 데브옵스를 위한 AWS 개발 도구 활용하기 - AWS Summit Seoul 2017
PPTX
소프트웨어 개발 트랜드 및 MSA (마이크로 서비스 아키텍쳐)의 이해
PDF
NRISE 개발스택
PDF
웹 IDE 비교
PDF
위클리 발표자료
PDF
1 swift 소개
PPTX
java_1장.pptx
PDF
iOS App development
인프콘 2022 - Rust 크로스 플랫폼 프로그래밍
SOSCON 2017 - Backend.AI
RAD Studio 10.2 도쿄
2022.08 멘토링 자료.pptx
AWS와 함께하는 무중단 배포 파이프라인 개선기 - 황성찬 (AUSG) :: AWS Community Day Online 2021
[AWS Community Day 2021] AWS와 함께하는 무중단 배포 파이프라인 개선기
[SwiftStudy 2016] 1장. Swift 소개
AWS CLOUD 2018- 보다 강력한 Serverless, AWS Lambda 기능 확장(안효빈 솔루션즈 아키텍트)
TurboRepo
React native development
Hybrid App Platform - HyWAI 3.5
[스프링 스터디 1일차] 오브젝트와 의존관계
효과적인 데브옵스를 위한 AWS 개발 도구 활용하기 - AWS Summit Seoul 2017
소프트웨어 개발 트랜드 및 MSA (마이크로 서비스 아키텍쳐)의 이해
NRISE 개발스택
웹 IDE 비교
위클리 발표자료
1 swift 소개
java_1장.pptx
iOS App development
Ad

More from NAVER D2 (20)

PDF
[211] 인공지능이 인공지능 챗봇을 만든다
PDF
[233] 대형 컨테이너 클러스터에서의 고가용성 Network Load Balancing: Maglev Hashing Scheduler i...
PDF
[215] Druid로 쉽고 빠르게 데이터 분석하기
PDF
[245]Papago Internals: 모델분석과 응용기술 개발
PDF
[236] 스트림 저장소 최적화 이야기: 아파치 드루이드로부터 얻은 교훈
PDF
[235]Wikipedia-scale Q&A
PDF
[244]로봇이 현실 세계에 대해 학습하도록 만들기
PDF
[243] Deep Learning to help student’s Deep Learning
PDF
[234]Fast & Accurate Data Annotation Pipeline for AI applications
PDF
Old version: [233]대형 컨테이너 클러스터에서의 고가용성 Network Load Balancing
PDF
[226]NAVER 광고 deep click prediction: 모델링부터 서빙까지
PDF
[225]NSML: 머신러닝 플랫폼 서비스하기 & 모델 튜닝 자동화하기
PDF
[224]네이버 검색과 개인화
PDF
[216]Search Reliability Engineering (부제: 지진에도 흔들리지 않는 네이버 검색시스템)
PDF
[214] Ai Serving Platform: 하루 수 억 건의 인퍼런스를 처리하기 위한 고군분투기
PDF
[213] Fashion Visual Search
PDF
[232] TensorRT를 활용한 딥러닝 Inference 최적화
PDF
[242]컴퓨터 비전을 이용한 실내 지도 자동 업데이트 방법: 딥러닝을 통한 POI 변화 탐지
PDF
[212]C3, 데이터 처리에서 서빙까지 가능한 하둡 클러스터
PDF
[223]기계독해 QA: 검색인가, NLP인가?
[211] 인공지능이 인공지능 챗봇을 만든다
[233] 대형 컨테이너 클러스터에서의 고가용성 Network Load Balancing: Maglev Hashing Scheduler i...
[215] Druid로 쉽고 빠르게 데이터 분석하기
[245]Papago Internals: 모델분석과 응용기술 개발
[236] 스트림 저장소 최적화 이야기: 아파치 드루이드로부터 얻은 교훈
[235]Wikipedia-scale Q&A
[244]로봇이 현실 세계에 대해 학습하도록 만들기
[243] Deep Learning to help student’s Deep Learning
[234]Fast & Accurate Data Annotation Pipeline for AI applications
Old version: [233]대형 컨테이너 클러스터에서의 고가용성 Network Load Balancing
[226]NAVER 광고 deep click prediction: 모델링부터 서빙까지
[225]NSML: 머신러닝 플랫폼 서비스하기 & 모델 튜닝 자동화하기
[224]네이버 검색과 개인화
[216]Search Reliability Engineering (부제: 지진에도 흔들리지 않는 네이버 검색시스템)
[214] Ai Serving Platform: 하루 수 억 건의 인퍼런스를 처리하기 위한 고군분투기
[213] Fashion Visual Search
[232] TensorRT를 활용한 딥러닝 Inference 최적화
[242]컴퓨터 비전을 이용한 실내 지도 자동 업데이트 방법: 딥러닝을 통한 POI 변화 탐지
[212]C3, 데이터 처리에서 서빙까지 가능한 하둡 클러스터
[223]기계독해 QA: 검색인가, NLP인가?

D2 OPEN SEMINAR - Smart editor 3.0 swift 도입기 (static library에서 dynamic framework로 전환)