IOS 개발 일지 6/3
주위 사람들과 해커톤 형식으로 IOS 앱을 만들기로 결정했다. 날을 하루 잡아 24시간여는 카페에서
계획한 프로그램을 만들기 전까지 나가지 않는걸로 … ㅎㅎ 뉴저지에서 프로그래밍을 할 줄은 누가 알았겠나
그나마 사회에서 경험있는 프로그래머 형들을 바라보면서 뭔가 하긴 해야지란 생각에 이것저것 일을 벌이고 있다.
개발하기에 앞서 선택해야 할 옵션들
첫째 . 언어의 선택
Object C와 Swift 프로그래밍 언어를 선택해야 한다.
-http://www.toptal.com/swift/from-objective-c-to-swift 이 글은 위 블로그에서 가져온 정보입니다.
2008년 iPhone sdk 2.0이 세상에 나왔습니다. 프로그램 개발 환경이 발전하면서
애플은 익숙치않은 메모리 관리와 문법을 시도했고, 오프젝트 C로 임시적인 성공을 거두었습니다.
그들은 계속하여 오브젝트 C를 발전시켰습니다. 블럭과 문자의 추가, 주소의 자동 집계, 많은 현대 프로그래밍 언어의
표면적인 기능들이 추가되며 진화해 왔습니다. 그 6년 이후 애플은 ‘Swift’라는 언어를 만들어 냅니다.
불안전한 포인터 관리를 없에고 강력한 새로운 기능들과 더불어 오브젝트 c와 c를 연동하는 언어가 탄생하게 됬습니다.
- 포인터를 쓰지 않고, 프로그래밍 언어의 가독성과 간략화한 것 같더라 -
오브젝트 C 와 Swift를 파헤쳐보자.
변수 상수
스위프트에서는 var 라는 단어를 사용한다. swift는 안전한 언어 형식이며 값을 할당할때 다양한 형식을 줄인다.
아래에 예를 적었다.
var x = 1 var s = “Hello”
만약 코드를 읽기 쉽게 만들고 싶다면
var y: Int
y = 2
이렇게 작성하면 된다.
Optionals
오브젝트 C에는 nil이라는 optional values 가 존재한다. optional value는 값이나 nil이 될수 있는데,
var s = “2014”
var x = s.toInt()
print(x)
할당하는 값을 “abc”를 s로 할때 변환을 할 수 없다.
var s = “abc”
var x = s.toInt()
print(x) // nil
optionals value를 가지고 다른 초기화나 할당 없이 코딩 할 수 있다.
String interpolation
swift는 오브젝트 C보다 간략하고 읽기 쉬운 string interpolation이 존재한다.
let width = 2
let height = 3
let s = “Area for square with sides \(width) and \(height) is \(width*height)”
objective-c 는 아래와 같다.
NSString *user = @“Gabriel”;
int days = 3;
NSString *s = [NSString stringWithFormat:@“posted by %@ (%d days ago)”, user, days];
오브젝트 c에 비해서 기능들이 간략화되고 가독성이 좋아졌다.
함수
스위프트의 함수들은 first-class types인데 함수를 변수에 할당하여 그들을 통해 매개변수를 정할 수 있다. 즉 리턴 값의 타입을 설정 하는 것이다.
func stringLength(s:String) -> Int
{
return countElements(s)
}
func stringValue(s:String) -> Int
{
if let x = s.toInt()
{
return x
}
return 0
}
func doSometing(f:String -> Int, s:String) -> Int
{
return f(s).successor()
}
let f1 = stringLength
let f2 = stringValue
doSomething(f1, “123”) // 4
doSomething(f2, “123”) // 124
그리고 우리가 변수들을 할당 했었어도, 문자에서 정수로 변환가능하다.
let f1:String -> Int = stringLength
Enumerations
swift는 objective-C 보다 계수들은 매우 많이 강력해졌다.
Objective - C와 다르게 스위프트 enumberations은 문자열, 문자, 실수를 각각의 맴버의 값처럼 할당할 수 있다.
그리고 toRaw() 함수는 각각멤버로 할당된 값을 돌려줄수 있다.
enum MobileDevice : String
{
case iPhone = “iPhone”, Android = “Android”, WP8 = “Windows Phone8”, BB = “BlackBerry”
func name() -> String
{
return self.toRaw()
}
}
let m = MoblieDevice.Android
print(m.name()) // “Android”
Classes And Sturcture
Objective-C와 달리 swift는 구조체와 클래스안에서 새로 interface와 implementation files을 분리하지 않아도 된다.
외부 인터페이스가 클래스와 구조체를 자동으로 사용할 수있게 만들어 준다.
스위프트는 더이상 헤더와 implementation 파일을 사용하지 않아도 된다.
class Bottle
{
var volume: Int = 1000
var label: String
func description() ->String
{
return “This bottle of \(label) has \(volume) ml”
}
}
대충 알아들으면서 적어나간건데, 공부하면서 더 추가하고 그래야한다.
무작정 앱만든다고 대충 보고 있는데 찾아가면서 공부해야 할듯...
매주 어플 하나 출시한단 각오로 !