반응형 iOS13 Xcode에서 SwiftUI 코드선택 익숙해지기 1. 개요 안드로이드 스튜디오에서는 expand selection이라는걸 제공한다.커서기준으로 범위를 확장하면서 선택해주는 기능인데 flutter 개발할 때 매우 유용하다. 현재 내 커서가 위치한 위젯의 범위를 정확하게 선택가능기에 위젯들을 마치 레고 조립하듯이 코드를 작성할 수 있다. 헌데 Xcode에서는 그런 기능이 없다는것을 알았다... 너무 불편하다. 그래서 방법을 찾은 결과 결국 해답은 vim에 있었다. 2. 선택방법 여러가지 Va{ 혹은 Va}, vaBb 을 하면 플러터에서 하듯이 뷰의 전체를 선택가능하다 실제 vim에서는 vaBV를 해야한다. 고로 vaBV로 연습하자 va{ 혹은 va}, vaB을 하면 중괄호를 포함한 뷰의 바디부분을. 선택할 수 있다 vab는 소괄호 선택 vaB는 중괄호 선.. 2024. 3. 22. [Swift] PropertyWrapper 사용법 https://docs.swift.org/swift-book/documentation/the-swift-programming-language/properties/ Documentation docs.swift.org 1. PropertyWrapper란? 파이썬의 데코레이션과 비슷하다. 파이썬의 데코레이션은 코드 앞뒤로 어떠한 코드를 붙여주는 작업을 해준다. 프로퍼티 래퍼또한 비슷하다. 어떤 프로퍼티 앞뒤로 특정한 작업을 넣을 수 있다. 2. 만드는법 만드는 방법은 간단하다. 1. struct를 정의할 때 @PropertyWrapper라고 적어준다 2. struct안에 wrappedValue라는 computedProperty를 정의해주면 된다 아래는 범위가 12까지인 프로퍼티를 프로퍼티 래퍼를 이용해 구현하.. 2024. 3. 22. [SwiftUI] 자식에게 State 전달하기 https://developer.apple.com/documentation/swiftui/managing-user-interface-state Managing user interface state | Apple Developer Documentation Encapsulate view-specific data within your app’s view hierarchy to make your views reusable. developer.apple.com 1. Binding 키워드 먼저 자식View에다가 @Binding 이라는 프로퍼티 래퍼를 생성한다. 이 프로퍼티 래퍼는 부모의 스테이트를 받아오는 역할을 한다 struct PlayButton: View { @Binding var isPlaying: Bool.. 2024. 3. 21. SwiftUI에서 {} 동작 원리 너무 궁금해서 찾아보았다.. 먼저 var body의 경우 아래와 같이 View라는 프로토콜에서 정의되어있고 computed property로 사용된다 그럼 VStack은 어떻게 동작하는가? https://stackoverflow.com/questions/66704988/returning-multiple-view-objects-from-a-closure-in-swift Returning multiple View objects from a closure in Swift I often see code like this: VStack { Text("A") Text("B") } From looking at the swift tutorials, I know that this is shorthand for speci.. 2024. 3. 20. [Swift] Generic이란 1. Generic Function 아래와 같은 함수를 보자. 인트 변수를 두개바꿔주는 함수이다. func swapTwoInts(_ a: inout Int, _ b: inout Int) { let temporaryA = a a = b b = temporaryA } 만약 정수형이 아니라 실수형을 바꿔주고 싶다면? 아래처럼 함수바디 구현체는 같은데 함수이름과 파라미터 자료형만 다른걸 세개나 정의해줘야 한다. func swapTwoInts(_ a: inout Int, _ b: inout Int) { let temporaryA = a a = b b = temporaryA } func swapTwoStrings(_ a: inout String, _ b: inout String) { let temporaryA = .. 2024. 3. 20. [Swift] inout 파라미터 1. inout 파라미터란 스위프트는 기본적으로 함수 파라미터가 constant다. 함수 내에서 이 값을 바꾸려 하면 컴파일 에러가 난다. 그럼 스위프트에서 call by reference를 어떻게 하냐? inout 파라미터를 사용하면 가능하다. inout 파라미터는 함수를 호출할 때 &를 붙여주어야 한다. C언어처럼 func swapTwoInts(_ a: inout Int, _ b: inout Int) { let temporaryA = a a = b b = temporaryA } var someInt = 3 var anotherInt = 107 swapTwoInts(&someInt, &anotherInt) print("someInt is now \(someInt), and anotherInt is no.. 2024. 3. 20. [Swift] Protocol 배우기 https://docs.swift.org/swift-book/documentation/the-swift-programming-language/protocols/ Documentation docs.swift.org 1. 프로토콜이란? 그냥 다른언어 인터페이스랑 똑같다고 생각하면 된다. 그런데 Swift 이놈은 용어가 너무 다르다. 생긴건 아래와 같다 protocol SomeProtocol { var mustBeSettable: Int { get set } var doesNotNeedToBeSettable: Int { get } } protocol AnotherProtocol { static var someTypeProperty: Int { get set } } 프로토콜 안에있는 변수들은 Property R.. 2024. 3. 19. iOS 디벨로퍼 계정없이 무료 빌드하는법 뭔가 정책이 풀린건지 이제 개발자 계정 없이 앱빌드가 가능해진것 같다. 이전에도 가능했으나 앱이 1주일후면 블락처리되고 그랬는데... 그래 애플씨. 좀 유하게 삽시다. 치사하게 굴지 말고 요약하면 다음과 같다 1. 먼저 디벨로퍼 사이트에 내 애플계정을 가입한다. 돈은 내지 말자 2. 디벨로퍼 사이트에 가입하면, 사이닝 페이지에 내 이름이 personel team으로 등록이 된다 3. 이를 이용하면 디버그용에 한해서 무료 빌드가 가능하다. 4. 앱을 빌드하고 디바이스에 올리면 신뢰할 수 없는 개발자라고 나온다. 5. 설정에 가서 안드로이드처럼 개발자 신뢰함을 설정하면 개발이 가능하다 2024. 3. 19. iOS에서 로그 볼때 OR, NOT 필터 거는법 XCode에서 로그를 볼 때 안드로이드와 다르게 iOS에서는 필터를 걸면 죄다 and이거나 죄다 OR로 설정할 수 있다. Match any conditions로 설정하면 로그필터 조건들이 죄다 OR로 설정된다 Match all conditions 로 설정하면 로그필터들이 죄다 and로 설정된다 이건 좀 짜증나네.. 반면 Device and Simulator에 들어가서 로그를 보면 서로다른 항목에 대해서는 AND로 동작하고, 같은 항목에 대해서는 or로 동작한다 가령 PROCESS Runner MESSAGE msg1 MESSAGE msg2 라고 하면 프로세스가 Runner이고 메세지가 msg1 msg2 이거 둘중 하나를 포함하는걸 필터링 하라 이다 2. Not 필터 거는법 Xcode에서 필터 설정후 옆에 .. 2024. 2. 8. [iOS] Static Library만들기와 사용 1. 프로젝트 만들기 Xcode에서 Static 라이브러리를 선택하고 언어를 선택한다. 오브젝트C는 언어가 그지같으니 스위프트 선택 그럼 이렇게 프로젝트가 생성되는데 열심히 코드를 작성해주자 2. 빌드하기 빌드 타겟을 정해주고 Product->build 혹은 Start버튼으로 빌드 해주자. 여기서 주의할건, iOS, iOS 시뮬레이터, 아이패드, 맥북등 타겟마다 다 따로 설정해줘서 빌드해야 한다. 본인이 원하는 타겟에 따라 적절히 선택해주자 빌드가 완료되면 Product -> show Build Folder in Finder를 선택해주자. 그럼 아래와 같이 파일들이 나온다 여기서 봐야할건 .a 파일과 swiftmodule이다. 둘다 사용되므로 다 챙기자! 3. 다른 프로젝트에서 사용하기 먼저 아래에 Bu.. 2024. 2. 8. iOS를 처음 시작하며 겪는 삽질들 회사에서 iOS를 대응할 일이 생겼는데 하필이면 레거시 코드이다. 단순히 공식문서 튜토리얼을 읽고 따라하기에는 무리수가 있는 상태. 본 내용은 iOS를 진입하며 삽질하는 내용을 다룸 1. 언어는 무엇으로 시작하나 iOS의 경우 현재 스위프트 언어를 사용한다. 허나 과거에는 ObjectC라는 언어를 사용하였다. ObjectC의 경우 C언어에 객체지향을 추가한 언어이다. 기본적으로 C언어와 사용법은 동일하나 클래스의 경우 사용법이 다른언어들과 완전히 다르다. 보통 하나의 언어를 배우면 다른언어는 대충 모양이 비슷해서 쉽게 하는데 ObjectC의 경우 그 갭이 어마어마하다. 하기 내용은 직접 정리한 내용인데 한번 읽으면 그래도 코드읽는데는 무리가 없을 것이다. ObjectC 클래스 간단히 배우기 https:/.. 2023. 5. 3. ObjectC 클래스 간단히 배우기 https://developer.apple.com/library/archive/documentation/Cocoa/Conceptual/ProgrammingWithObjectiveC/WorkingwithObjects/WorkingwithObjects.html#//apple_ref/doc/uid/TP40011210-CH4-SW2 Working with ObjectsWorking with Objects The majority of work in an Objective-C application happens as a result of messages being sent back and forth across an ecosystem of objects. Some of these objects are instanc.. 2023. 5. 2. 스위프트 배우기 1부 - 스위프트 투어 https://docs.swift.org/swift-book/documentation/the-swift-programming-language/guidedtour Documentation docs.swift.org 1. 프로그래밍의 시작점 아래 코드는 완전한 하나의 프로그램이다. 스위프트는 글로벌 스코프에서 작성된 코드가 시작점이다. main함수같은게 필요 없다 print("Hello, world!") // Prints "Hello, world!" 2. 변수 설정 스위프트에서는 let과 var로 변수를 선언한다. let은 상수, var는 변수이다. 스위프트에서는 변수는 사용되기전에 반드시 초기화 되어야 한다. var myVariable = 42 myVariable = 50 let myConstant = 4.. 2023. 3. 15. 이전 1 다음 반응형