Intro 사실 나는 깃에 대한 이론 공부를 꽤 많이 했었다. 처음 개발을 시작했을 때부터 특강도 자주 듣고, 연습도 해봤지만 이론만 알고 실무에서는 막상 제대로 써 본적이 없었다. 혼자 작업하면 브랜치를 따로 팔 일도 없고, 맨날 커밋 푸시만 하게 된다ㅜㅠ 또 얼마 전에 git reset -hard 로 레포를 크게 날린 적이 있었기 때문에 (미리 백업을 해두어서 복구는 잘 했지만...) 한동안 깃을 쓰는걸 피하고 있었다. 회사에서 깃을 날리면 정말 큰일이 날 수 있으므로 이번기회에 잘 정리해보려고 한다! 서론 개발자들은 왜 깃을 쓸까? 단순히 코드를 저장하는 곳 보다는 깊은 의미가 있다. 굳이 코드를 저장하기 위한 용도라면 그냥 드라이브를 쓰는게 더 편할수도 있다. 복잡한 깃을 쓰는 이유는, 깃은 **..
올바르지 못한 코드 if ([[[UIDevice currentDevice] systemVersion] floatValue] >= 7.0) { // Load resources for iOS 7 or later } else { // Load resources for iOS 6.1 or earlier } 사유 1: Version numbers aren’t always a simple floating-point number, for example “4.2.1” is a valid iOS version number. 2: You’re doing raw floating point comparison. Due to the finite precision of floating point numbers, your comp..
Functional Programming은 "자료 처리를 수학적 함수의 계산으로 취급하고 상태와 가변 데이터를 멀리하는 프로그래밍 패러다임의 하나이다" . OOP나 절차지향같은 프로그래밍 방법들을 배운 것처럼, 함수형 프로그래밍도 그의 한 예제이다. Functional Programming의 가장 큰 특징 중 하나는 순수함수이다. 순수함수란, 부작용(side-effect)이 없는 함수, 즉, 함수의 실행이 외부에 영향을 끼치지 않는 함수를 뜻한다. 순수함수는 입력으로 주어진 것 외의 연산은 실행 하지 않음 순수함수는 부수효과(side effect)가 없어야 함 입력이 동일하면 출력이 동일해야함 상태의 변화가 없어야함 add(1,2) 이런 함수는 순수 함수라고 볼 수 있다. 어떤 값이나 상태를 바꾸지도 않..
var anOptionalInt: Int? = 10 var anotherOptional = anOptionalInt ?? 0 '??' 코딩하면 자주 보게되는 연산자다. 이런 간단한 코드가 있다고 해 보자! 옵셔널 값인 a가 nil이 아니면 옵셔널 아닌 그냥 int에 담아주는 코드이다. 이런 상황에서 저렇게 길게 코드를 안쓰고, 연산자로 한방에 해결하기 위한게 nil병합연산자 다. 이렇게 쓰면, a가 nil이 아니면 a값이 ! 되어서 나오고, nil이면 0이 들어간다.
Call this method when you want the current object to be the first responder. Calling this method is not a guarantee that the object will become the first responder. UIKit asks the current first responder to resign as first responder, which it might not. If it does, UIKit calls this object's canBecomeFirstRespondermethod, which returns false by default. If this object succeeds in becoming the fir..
textField.pattern = "[a-zA-Z]" 회사에서 코드 살펴보다가 이런 코드가 있었는데...! 뭐였을까 찾아보는 중이다. 정규표현식이라는걸 찾아서 내용을 정리해보려규 한다. 일단 swift에는 정규표현식 라이브러리가 있다. NSRegularExpression..!이라고 부른 것! NS가 붙었으니 Objective-C로 짜여졌다는 것도 알 수 있다. 예제로 좀 더 살펴보자! 만약 내가 인스타같은 서비스를 개발중인데, 해시태그(#)가 붙어있는 단어들만 추출한다고 해 보자. if문으로 떡칠하기에는 나는 너무 바쁜 개발자다. 야근 시렁 그럼 어떻게 하면 좋을까?? 왠지 똑똑한 사람들이 이미 이런 기능을 만들어 뒀을 것 같은 기분이 들지 않는가???? 그걸 해주는게 바로 정규표현식이다. 우리는 정규..
$0, $1 단축 인자 이름은, 클로저의 매개 변수 순서대로 $0, $1 ... 이렇게 간다!! result = calculate(a:10, b:10){ $0 + $1 } (심지어 return도 안써줘도 된다... 자동으로 알아...) result = calculate(a:10, b:10, method: { ( left:Int, right:Int ) -> Int in return left + right } ) 일반적인 클로저 폼⭐️⭐️ 난 처음에 in이 뭔지 몰라서 꽤 헤맸는데, 허무하게도 그냥 키워드였다고 한다. ㅜㅠ 클로저에는 여러가지 것들이 더 있는데, 대표적으로 후행 클로저, 반환타입 생략, 단축 인자이름, 암시적 반환 표현 등이 있다. 후행 클로저는 진짜 이상하다 (사실 왜 만들었는지 모르겠음 ..