일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | ||||||
2 | 3 | 4 | 5 | 6 | 7 | 8 |
9 | 10 | 11 | 12 | 13 | 14 | 15 |
16 | 17 | 18 | 19 | 20 | 21 | 22 |
23 | 24 | 25 | 26 | 27 | 28 |
- view
- 개발자
- JPA
- appstore
- MacOS
- window
- mac
- Realm
- error
- 한글
- Session
- Apple
- Firebase
- geofencing
- iOS16
- 웹뷰
- darkmode
- 이미지
- UIButton
- Xcode
- github
- Archive
- Code
- FLUTTER
- Swift
- SwiftUI
- rxswift
- Git
- Notification
- IOS
- Today
- Total
목록분류 전체보기 (269)
EEYatHo 앱 깎는 이야기
매우 주관적이고, 개인 경험에 따른 내용입니다. 1. cmd 장점 - 감성 넘침. ( ㄹㅇ ) - 타자 치는 맛이 있음. - git 명령어들에 익숙해질 수 있음. - 플러그인 설치로 커스터마이정 자유로움. 단점 - 긴 커밋메시지 작성 불편함. - 변경사항 확인하기 불편함. ( 이거만 편했으면, cmd 계속 썼을 듯 ) - 사전 세팅이 복잡함. - 타자로 치는게 불편할 때도 있긴함. 2. xcode git 장점 - 한 파일의 커밋 분리가능. ( 대박대박 ) - 사전 세팅 편함. - 누구보다 빠르게 commit 가능. 단점 - 커밋 히스토리 보는게 불가능. ( 치명적인 단점 ) 3. sourceTree 장점 - 누구보다 빠르게 merge 가능. - 다양한 계정 repository 왔다갔다 하기 편함. ( 회..
나중에 시간 지나서 보면, 잘 할 수 있도록 기록하는 용도. .github/workflows/swift.yml 에 있는 파일로 여러 스크립트나 옵션들 설정 가능. gpg로 필요한 certification 이랑, provision 암호화하고 .github/secrets에 올림. 복호화에 필요한 정보는 깃헙액션 옵션에 secrets에 올림. name: Swift on: push: branches: [ master ] pull_request: branches: [ master ] jobs: build: runs-on: macos-latest # macOS 최신버전이서 빌드한다는 뜻 env: XC_VERSION: ${{ '12.5.1' }} XC_PROJECT: ${{ 'Nemo.xcworkspace' }} X..
swipe back 을 끄고, 키는 것은 interactivePopGestureRecognizer로 한다. navigationController?.interactivePopGestureRecognizer?.isEnabled = true // false 하지만, back을 성공했는지 실패했는지 감지할 때는 한계가 있다. @available(iOS 7.0, *) open var interactivePopGestureRecognizer: UIGestureRecognizer? { get } interactivePopGestureRecognizer는 그저 UIGestureRecognizer이기에, 얘를 아무리 들들 볶아도 화면 전환을 성공했는지 실패했는지는 알 수 없다. * 안되는 방법1 ) target을 이용한..

ld: file too small (length=0) file '파일경로' 갑자기 시뻘건 에러가 떴다. 검색했더니 클린 빌드하란다. 했더니 해결되었다. 흠.... 이유는 모르겠다.ㅇㅁㄴㄹ 경로로 나온 파일은 전혀 건들지도 않았는데 갑자기 왜지..? ( macOS 업데이트를 해서? xcode 업데이트를 해서? fetch받은게 이상하게 꼬여서? 흠.. 😟 )
프로토콜이란? 특정 역할을 하기 위한, 메소드, 프로퍼티, 기타 요구사항 등의 청사진. 프로토콜은 정의를 제시하지 기능 구현은 안함. (추상의 클래스 역할) 프로토콜의 장점 2015년 9월, WWDC에서 스위프트 버전 2.0을 발표하면서, 스위프트는 프로토콜 지향 언어(Protocol-Oriented Language) 라 칭함 레퍼런스 시멘틱스(class)는 추적에 많은 비용이 들어감. => 프로토콜을 이용하면 값 시멘틱스(struct)로 캡슐화, 추상화를 할 수 있다. 프로토콜 익스텐션의 초기구현을 사용하여 재사용성도 챙길 수 있다. 테스트시, Mocking 을 쉽게 할 수 있다. ( 테스트할 모듈은 구현체로, 다른 모듈은 Protocol을 채택하고 테스트 결과를 확인할 수 있는 Mock 으로 사용. ..
1. defer 함수안에 defer을 작성한다. 함수를 종료할 때, 가장 마지막에 수행할 명령들을 담을 수 있다. defer로 묶인 코드는, 그 위치가 어디에 있던 함수 마지막에 실행된다. 함수 내부에서 파일을 열었을 때, 종료 전에 닫는 작업을 하는 등. C++에서 메모리 해제하는 느낌으로 사용하면 좋다. 다만, defer은 함수가 종료될 때 실행된다. 그런데 guard에 의해서 함수가 종료될 때는 실행이 안된다 ㅡㅡ; func priority(index: Int) { guard index > 0 else { print("index is lower than zero.") return } print("function work fine :)") defer { print("I am defer code") }..
1. Closure란? 호출(실행) 가능한 코드 블록. 클로저 안에서, 클로저가 작성된 범위의 변수나 함수들 접근 가능. 다른 범위에서 실행되어도, 작성된 범위의 항목만 접근 가능. 2. map 메소드로 축약문법 알아보기 map은 배열의 모든 원소에 특정 연산을 수행한 배열을 반환. var numbers = [20, 19, 7, 12] numbers.map({ (number: Int) -> Int in return 3 * number }) // [60, 57, 21, 36] 2-1. return 생략 명령어가 하나뿐인 클로저라면, 자동으로 그 명령어의 반환값을 리턴함. var numbers = [20, 19, 7, 12] numbers.map({ (number: Int) -> Int in 3 * numb..
다비이스의 여유 저장공간을 단위까지 변환해서 구하는 함수 /// 여유공간 구하기 func getFreeSizeAsString() -> String { let documentDirectoryPath = NSSearchPathForDirectoriesInDomains(.documentDirectory, .userDomainMask, true) var freeSize: NSNumber? // Byte단위 do { let attributes = try FileManager.default.attributesOfFileSystem(forPath: documentDirectoryPath.last! as String) freeSize = attributes[FileAttributeKey.systemFreeSize] a..