분류 전체보기

Swift

초기화(initialization.. 편의? 지정?)

https://bbiguduk.gitbook.io/swift/language-guide-1/initialization 초기화 (Initialization) | Swift 타입의 저장된 프로퍼티에 초기값을 설정하고 초기 설정을 수행합니다. 초기화 (Initialization) 는 인스턴스의 클래스, 구조체, 또는 열거형을 사용하기 위해 준비하는 단계입니다. 이 단계에는 인 bbiguduk.gitbook.io 여기들어가면 어마어마하ㄷ..분량이... 그만큼 초기화가 swift에서 중요하다. Swift는 모든 저장된 프로퍼티가 초기값을 받을 수 있도록 클래스 타입에 대해 2가지의 초기화 구문을 정의한다. => 바로 지정된 초기화와 편의 초기화라는 친구들이다. 지정된 초기화(designated Initialize..

Swift

Function(1급시민 , inout & 클로저✨)

Swift의 함수는 1급 타입(First Class-type)이다 근데 1급타입이 몬데 ? 아래의 3가지를 만족하면된다.아래의 3개가 1급시민의 조건이고 그것을 충족하는 객체가 1급객체이다. 변수와 상수에 함수가 저장될수 있다. 아래에서 보면 increment라는 변수에 함수를 할당해주었다. 그러면 저 변수는 함수 그자체 그런데 주의 할게 동일한 이름의 함수가 오버로딩 되어있을때는 타입추론이 안되고 타입 명시를 해주어야함. 함수가 다른 함수를 값으로 반환할 수 있다. func makeIncrementer() -> ((Int) -> Int) { var answer = 1 func addOne(number: Int) -> Int { return answer + number } return addOne } v..

Swift

Assertions && Preconditions

Swift기본을 다지기 위해 공부하던중 역설과 전제조건....뭐야 왜이렇게 입에 안달라붙고 한국어가 어렵냐..하며 찾아봤다... - Runtime시 발생하는 조건 - 불값이 true면 코드가 진행되고 false면..? 종료시킬수 있음 - 역설은 개발과정에서의 실수를 찾는데 도움을 주고 전제조건은 프로덕션문제 감지하는데 도움을 준다. => 유효하지 않은 조건이 발생하지 않도록 코드를 디자인하기 위해 사용한다. 뭐가다른데? 역설은 오직 디버그 빌드에서만 체크(프로덕션에서는 영향을 안주기에 개발단계에서 많이 해도 상관없다) 전제조건은 디버그와 프로덕션 빌드에서 체크 출시할때 엄청 크리티컬한거 예를들면 어? 이 함수 저번 버전인데 우리 업데이트했는데? 그래서 안바꾸면 API통신 안될텐데.? 프로덕션하고 디버그 ..

SWIFTUI

go back to basic - @main 플젝만들면 항상생기는 파일 이건 몰까?

어떠한 프로젝트를 만들면 항상 App파일과 ContentView가 만들어진다. 그리고 WindowGroup안에는 ContentView가 들어있다. 이것은 어떻게 작동하는 방식일까? @main은 Type 기반 프로그램 엔트리포인트로 아 너가 앱이 최초 시작점이자 진입점이구나를 알수 있다. 보면 이 구조체는 App프로토콜을 채택하고 있다 이 프로토콜은 시스템이 앱을 실행하기 위해 호출하는 main() 메서드의 기본 구현을 제공합니다. 모든 앱 파일 중 정확히 하나의 진입점을 가질 수 있습니다. 또 다른게 body를 보면 Scene 프로토콜이 있다. 씬은 뷰계층구조의 루트뷰를 포함하고 있고 시스템에 의해 관리되는 라이프사이클을 가지고 잇다. setting과 같은 구체화된 Scene type을 줄 수 도 있다...

Swift

LLVM? Swift가 컴파일되는 과정 Swift 기초

우선 Swift를 다시 공부하기 전에 나도 1년동안 했는데 머리가 좀 커졌잖아?? 그러니 하나하나 할때 Deep Dive를 해보자!! Swift는 우선 스크립트 언어가 아닌! 함수형언어이자 컴파일 언어이다. 먼저 스크립트 언어란? 컴파일러 없이 한줄 한줄 읽으며 실행한다.번역속도는 빠르지만 매번 실행시킬때마다 한줄한줄...읽어야해서 프로그램 실행속도는 컴파일언어보다 느리다. 컴파일 과정이 없어서 실행해봐야 오류가 있는지없는지 안다. 컴파일언어란?소스코드를 컴파일러가 컴파일 하여 objc파일로 만들고 링커가 실행파일로 만드는 과정이 필요한 언어. Swift Compile과정!!! 1. 먼저 컴파일전에 전처리를 한다 (#define, #include)요론놈들 2. 파싱을 함. 전처리된 소스코드를 토큰단위로 ..

SWIFTUI

some(Opaque Type)&any Keyword

제일 먼저 swiftui로 app을 만들면 만나는 코드! 그런데 우리는 과연 이 코드를 정확히 이해하고 사용하는 것일까??다른 사람은 모르겠지만 저는 일단 NOPE!!Somestruct ContentView : View { var body : Text { Text("Hello World")}}위의 코드는 에러를 표출하지 않고 정상 작동한다. 하지만 body에  text이외의 다른 타입이 들어가게 되면 에러가 뜬다.이럴때 사용하는 것이 some View. 다양한 view 프로토콜을 준수하는 구조체들을 마음껏 사용할  수 있게 된다. 아주아주아주 중요한 키워드니까 꼭 기억해야 할것!func maxT>(_ x: T, _ y: T) -> T where T: Comparable { ... } 요것이 일반적인 ..

SWIFTUI

근본으로 돌아가자(4)-@State,@StateObject,@ObservedObject

What is @StateObject???? 우리의 G선생 왈 ObservableObject protocol을 따르는 객체의 생명주기를 관리하는데 쓰이는 프로퍼티 wrapper라고 한다. stateobject를 지정하는 순간 스유(swiftui)가 뷰계층구조가 살아있는동안 유지되도록 보장한다. >> 이것은 다른 화면으로 넘어갔다가 오더라도 객체는 지속된다는 뜻이다 객체를 생성하고 객체 관리, 뷰의 수명동안 새로운 인스턴스를 한번만 찍어냄. 이 찍어내는 타이밍은 뷰에서 생성자 처음 호출할때 그때 한번!!! 그때 stateObject생성자 한번찍힌다고 생각하면 된다. 그러면 어떻게 사용할까요? 1. 이런식으로 클래스 인스턴스 한번 찍어낼때 struct MyView: View { @StateObject pri..

SWIFTUI

@ViewBuilder & @resultBuilder

@ViewBuilder You typically use ViewBuilder as a parameter attribute for child view-producing closure parameters, allowing those closures to provide multiple child views. For example, the following contextMenu function accepts a closure that produces one or more views via the view builder. func contextMenu( @ViewBuilder menuItems: () -> MenuItems ) -> some View 이를 통해 contextMenu의 클로저를 통해 하나이상의 뷰가..

SWIFTUI

근본으로 돌아가자(3)-View Layout

정말정말정말 오랜만에 글을쓰는 것 같다... 아카데미가 끝난 이후 개인프로젝트를 몇개 하고 상하이 여행도 갔다오고 게임도 하고... 쫌 놀았다.. 정신줄 놓고 있었는데 한 동아리 면접을 보러 갔다가 정신을 차리게 되었다! 이전까지는 나정도면...못하진 않지? 했다가 그냥 탈탈 탈곡기마냥 털렸다....정말정말정말 부끄러웠던 순간이였다...... 그래서 다시 근본으로 돌아가자! https://developer.apple.com/videos/play/wwdc2019/237/ Building Custom Views with SwiftUI - WWDC19 - Videos - Apple Developer Learn how to build custom views and controls in SwiftUI with a..

SWIFTUI

근본으로 돌아가자(2) - animation & iOS 17에서 바뀐것들

WWDC23에서 공개된 것을 보면 SwiftUI를 개발한 핵심동기가 바로 앱에 애니메이션을 쉽게 추가할수 있도록 하는 것이다!라고 애플에서 스스로 밝힐만큼 중요한 요소이다. https://developer.apple.com/videos/play/wwdc2023/10156/ struct AnimationView: View { @State private var selected = false var body: some View { Image("bell.fill") .resizable() .frame(width:200) .scaleEffect(selected ? 2: 1) .onTapGesture { selected.toogle() } }} 그전에 SwiftUI에서 뷰업데이트를 살펴보자. 이런 코드가 있다고 보..

2료일
'분류 전체보기' 카테고리의 글 목록 (4 Page)