I'm a Developer
-
⚒️ 리팩토링은 비즈니스에 어떤 영향을 줄까요? (feat. 리팩토링은 적인가 아군인가...)I'm a Developer/개발 잡담 2023. 7. 1. 19:23
1. 리팩토링은 저~엉말 꼭 필요할까요? 개발을 하다보면 리팩토링은 필연적인 과정이 되곤 합니다. 불과 3개월 전 코드도 리팩토링의 대상이 되기도 하니까요. 그럼 그 이유는 무엇일까요? 🤔 제가 개발자가 아닌 다른 직군의 생각을 감히 대변해보자면 이럴 것 같습니다. 기능 추가나 업데이트도 바쁜데, 리팩토링은 왜 하는 거지? 애초에 처음부터 잘 만들면 되지 않나? 몇 개월 전에 만든 건데 왜 갈아엎는 거지? 지금 굳이 리팩토링 해야 하는 건가? 이에 대한 답변은 그때그때 마다 상황과 맥락에 따라 다를 수 있다고 생각해요. 그런데 개발자가 느끼기에 리팩토링이 필요한 경우는 대부분 (개발자 입장에서) 정말 필요한 경우이기 때문이에요. 리팩토링을 하려는 개발자는 코드를 보다 보면 정말 필요하다고 느끼기 때문에 ..
-
NotificationI'm a Developer/iOS & macOS 2020. 3. 2. 15:48
Notification에 대해 글을 쓸까 합니다. iOS에서 Notification은 크게 3가지로 볼 수 있습니다. 1. Notification 하나의 프로그램내에서 객체들이 주고 받는 메시지 특정 이벤트에 대해 옵저버를 등록하고 이벤트가 호출되면 옵저버에 등록해놓은 이벤트 핸들러를 호출합니다. 눈에 보이지 않습니다. Foundation 프레임워크에서 NotificationCenter 객체를 주로 사용 별도의 권한이 필요없습니다. 2. Local Notification 지정된 시간에 로컬 Device(스마트폰)에서 사용자에게 알람을 전달하는 기능입니다. 알림으로 보여집니다. UserNotification 프레임워크에서 제공 별도의 권한이 필요없습니다. 3. Remote Notification 대표적으로..
-
[iOS] 안전한 로그인을 위한 키체인(Keychain)과 FaceID/TouchID - 원문 해석본I'm a Developer/iOS & macOS 2020. 2. 4. 15:43
본 글은 Tim Mitra라는 개발자의 "How To Secure iOS User Data: The Keychain and Biometrics – Face ID or Touch ID" 라는 주제의 글입니다. iOS에서 유저의 데이터를 안전하게 관리하기 위한 코드 작성에 대한 튜토리얼로 키체인과 생체정보(FaceID, TouchID)를 활용하여 구현하는 예제 입니다. 본 글의 원문은 Raywenderlich에 있으니 정확한 text는 원문을 참고하시기 바랍니다. 로그인 화면으로 앱을 보호하는 것은 사용자 데이터를 보호하는 좋은 방법입니다. iOS에 내장 된 키 체인을 사용하여 데이터를 안전하게 유지할 수 있습니다. Apple은 또한 Face ID 및 Touch ID로 또 다른 보호 계층을 제공합니다. iP..
-
[iOS] SceneDelegate/UISceneSession 가장 깔끔하게 없애는 방법 - 'UISceneSession' is only available in iOS 13.0 or newerI'm a Developer/iOS & macOS 2020. 2. 4. 11:13
지난 WWDC2019에서는 SwiftUI와 더불어 iOS 13으로의 업데이트와 함께 새로운 프로젝트를 생성할 때, SceneDelegate를 무조건 생성하게 됩니다. 하지만 아직까지는 iOS13 버전보다 낮은 버전을 지원해야할 때이고, SwiftUI를 쓰지않고 개발하는 경우가 더 많기 때문에(또 인터넷에 있는 대부분의 예제들이 SceneDelegate없이 동작하기 때문에) 이를 제거하고 기존의 방법대로 프로젝트를 가동시키는 것을 설명하고자 합니다. 순서는 다음과 같습니다. SceneDelegate 제거 AppDelegate에 window객체 추가하기 AppDelegate에서 UISceneSession 관련 메소드 제거 .plist에서 SceneDelegate관련 속성 제거 -- 1. SceneDelega..
-
API Timeout 처리 (with. RxSwift)I'm a Developer/iOS & macOS 2020. 1. 15. 11:18
API Request를 보낼때 일반적으로 Request에 대한 부분은 미리 작성된 공통의 네트워크 코드에 넣어 놓는 경우가 많습니다. 이를테면 URLRequest의 timeoutInterval 속성에 몇 초 뒤에 timeout을 발생시킬 것인지에 대해 정의해 놓게 됩니다. 그런데 어떤 경우에는 특정 API 하나에서만 timeout이 더 짧은 시간이 필요한 경우가 있습니다. 이를 위해 공통으로 정의된 timeout 시간을 바꾸는 것은 바람직 하지 않습니다. 이럴 때는 API 콜을 하고 반환되는 observable에 아래의 메소드를 써주면 someObservable .timeout(2.0, scheduler: ConcurrentDispatchQueueScheduler.init(qos: .background)..
-
Xib(Nib)으로 outlet변수를 연결할 때, 크래시가 발생하는 현상I'm a Developer/iOS & macOS 2020. 1. 15. 08:06
iOS에서 커스텀 뷰를 사용하기 위해 Xib를 많이 사용하실텐데 이런 에러 많이 접하셨을 거에요. reason: '[ setValue:forUndefinedKey:]: this class is not key value coding-compliant for the key ****.' 여기서 ###### 은 해당 커스텀 View의 클래스 이름이고 ****은 잘못 연결된 outlet변수입니다. 이 에러는 결과적으로 UILabel의 outlet을 잘못된 녀석이 소유하게 되어 발생하는 것입니다. 그래서 실제 CustomView에 연결이 안되었기 때문에 이런 에러가 발생하게 됩니다. 자 이제부터 해결해볼게요. UILabel의 outlet을 먼저 코드에 연결시켜보겠습니다. 그럼 위 그림과 같이 뜰거에요 File's ..
-
[CocoaPods Library pod repo push 에러] The validator used Swift 3.2 by default because no Swift version was specified.I'm a Developer/iOS & macOS 2019. 4. 4. 14:46
최근 XCode 10.2로 업데이트를 하고 나서(정확히는 Swift 5를 지원하기 시작하면서) CocoaPods 라이브러리를 pod에 push 하려고 하니까 다음과 같은 에러를 마주하였습니다. The validator used Swift 3.2 by default because no Swift version was specified. To specify a Swift version during validation, add the `swift_version` attribute in your podspec. Note that usage of the `--swift-version` parameter or a `.swift-version` file is now deprecated. 이건 사실 정확히는 모르겠지만..