본문 바로가기
반응형

swift

iOS 개발자 되는 방법 2017년, 땡전 한푼 없던 나는 돈을 빌려서 200만원 가까이 되는 맥북 프로를 구매했다. 맥북으로 모바일 앱을 개발해서 광고를 올리고 돈을 벌어보고 싶다는 생각이 문득 들었기 때문이다. 무슨 자신감이었는지 빌린 200만원은 앱 개발만 끝나면 바로 갚을 수 있을 거라 생각했다. 그래서 어떻게 됐냐고? 물론 개발한 앱은 망했다. 하지만 빌린 200만원은 금방 갚았다. 왜냐면 몇 달 후 iOS 개발자로 취업했기 때문이다. 사실 애초에 플랜 A부터 C까지 준비했었다. A. iOS 앱을 개발해서 광고수익으로 부자되기 - 실패 B. 개발한 iOS 앱을 포트폴리오로 활용하여 취업하기 - 성공 C. A랑 B 둘중 하나라도 될 때까지 계속 공부 및 개발하기...? 정말로 운 좋게 플랜B에 따라 약 반년 뒤 홍콩의 F.. 더보기
[Swift] @frozen은 무슨 의미일까? @를 붙이면 자바에서는 Annotation이라고 부르던데, Swift에서는 Attributes라고 한다. 완전히 같은것인지는.. 잘 모르겠지만 비슷한것 같다. 네트워크 서비스를 구현하다가 Result라는 enum의 선언을 봤는데 @frozen이 붙어있었다. 잉 근데 도대체 이게 뭐지? 일단 얼었다는 뜻이니까.. 고정되어 있다는 것을 의미한다고 유추할 순 있었다. 그래서 찾아보니... @frozen을 붙여주면 나중에 새로운 case가 추가되지 않는걸 약속한다는 의미란다. 근데 그걸 왜 약속해야 하지? @frozen이 붙은것과 안붙은 것의 차이 @frozen이 없는 enum의 예시부터 확인해 보자. func example1(_ sizeClass: UIUserInterfaceSizeClass) { switch.. 더보기
[iOS] MVC와 MVVM에 대한 생각 현재 회사에서 iOS 앱 8개를 맡아서 업무를 하고 있다. 대부분 넘겨받은 앱들이라 기존 작성되어 있는 패턴에다가 살을 붙이는 작업이 주로 하는 업무인데, 이런 업무를 하면서 가장 문제가 되었던 부분은 단연 디자인 패턴에 있다고 생각이 든다. 앱에서 거의 대부분 MVC 패턴을 사용하고 있는데, 처음 볼륨이 작았을 때는 별로 문제가 되지 않았을지 모르지만 점점 기능들이 추가되는데도 불구하고 MVC 패턴을 유지해왔다. 그러다보니 ViewController의 내용이 점점 길어지고 복잡해져서 가독성도 떨어지고 디버깅을 하는데 아주 큰 어려움이 있다. 개인적으로는 상황에 따라 MVC와 MVVM을 혼용하는게 적절하다고 생각하고 있는데, 앱의 볼륨이 너무 커지다 보니 리팩토링이 엄두가 나지 않는 수준이 되어버렸다. .. 더보기
[Xcode] Build Configuration 및 Flag 추가하기(#if DEBUG 처럼..) 목록 #if DEBUG 말고 다른 flag가 필요하다면? Build Configuration 추가하기 Custom Flags 추가하기 #if DEBUG 말고 다른 flag가 필요하다면? Xcode에 기본적으로 DEBUG와 RELEASE라는 Build Configuration이 세팅되어 있다. 보통 DEBUG는 디버그 빌드용으로, RELEASE는 출시용으로 나누어서 구분하여 관리한다. 내가 관리하는 앱 같은 경우 DEBUG와 RELEASE에 따라 API 주소를 변경해줘야 하기 때문에 아래와 같이 사용한다. #if DEBUG var requestURL = "https://dev-...." // development API 주소 #else var requestURL = "https://prod-...." //.. 더보기
[swift] 클래스 클래스 클래스는 아래와 같이 선언할 수 있다. 클래스 내부에 함수나 변수를 선언할 수 있고 변수는 프로퍼티(Property), 함수는 메서드(Method)라고 부른다. class MyClass { var property: String = "property" func method() -> String { return "method" } } 클래스에 소괄호를 붙여 인스턴스(instance)를 생성할 수 있다. 즉, 클래스라는 객체를 만들고 그것의 인스턴스를 만들어서 객체를 활용할 수 있는 것이다. let instanceOfHuman = MyClass() print(instanceOfMyClass.property) // "property" print(instanceOfMyClass.method()) // "m.. 더보기
[swift] 함수와 클로저 함수 매개변수 x와 y 두 값을 받아서 더하여 반환하는 함수를 아래와 같이 만들 수 있다. func sum(x: Int, y: Int) -> Int { return x + y } print(sum(x: 1, y: 3)) // 4 출력 파라미터(x, y) 앞에 커스텀 전달인자를 설정할 수 있다. 아래 sum 함수의 경우 x에는 a, y에는 b라는 전달인자 이름을 설정했다. 이후 sum 함수를 호출할 때 a와 b가 전달인자 이름으로 사용된다. func sum(a x: Int, b y: Int) -> Int { // 커스텀 전달인자 설정(a,b) 및 파라미터(x,y) return x + y } sum(a: 1, b: 3) // a, b 커스톰 전달인자 파라미터(x, y) 앞에 "_"를 통해 전달인자 이름을 생.. 더보기
[Xcode 12] 인텔 맥북과 M1 맥북의 Architecture 차이점(x86_64와 Arm64) 사건의 발단 6월부터 새로운 iOS 앱을 맡게 되었다. 시니어가 유지 보수하던 우리 회사 가장 잘 나가는(?) 앱인데 사이즈가 꽤나 큰 편이다. 그런데 문제가 생겼다. 첫 빌드부터 잘 안 되는 것이었다. 문제는 한 프레임워크로부터 발생했다. 첫 번째 오류 Building for iOS Simulator, but the linked framework 'yourFramework.framework' was built for iOS. 해석하자면, '너 지금 iOS 시뮬레이터로 빌드 중인데, 'xxx.framework'라는 프레임워크는 iOS 전용으로 만들어짐.'이라는 뜻인데, 대충 시뮬레이터로는 동작하지 않도록 만들어진 프레임워크라는 뜻인 듯했다. 폭풍 구글 검색 ㄱㄱ 헛발질 1 Project > Targets.. 더보기
함수(function)와 메서드(method) 차이? swift로 개발하면서 func라는 명령어로 함수를 선언하는데, 분명 function의 의미다. 근데 보통 업무에 대해 얘기하다보면 function이라는 표현보다는 method라는 표현을 쓰곤 했다. 근데 문득 내가 그렇게 쓰면서도 도대체 둘의 차이를 모르고 쓰고 있다는 사실을 알게됐다. 아.. 프로의식이 항상 부족해... 그래서 반성하는 겸 둘의 차이를 알아보기로 했다. 자 위키피디아의 힘을 빌려보자. 오, 함수 문서에 메서드가 포함되어 있다. 즉, 메서드는 함수의 한 종류로 볼 수 있겠다. 함수는 쉽게 말해서 반복되는 코드를 호출과 수정을 쉽도록 하는 '기능'이다. 그래서 그 기능을 사용하기 위해 func 등의 명령어로 선언 하는것이고. 그럼 메서드도 그러한 함수이긴 한데 뭐가 다른걸까? 객체지향 프.. 더보기