# Swift 쉽게 더 쉽게
# Single view application
- AppDelegate.swift
- 애플리케이션의 동작을 모니터링하는 애플리케이션 델리게이트 역할.
function applicationDidEnterBackground(...)
<<사용자가 우리 앱에 더이상 관심을 두지 않을 때 할 일을 처리- e.g 우리 앱 사용하다 전화받으면 우리 앱 백그라운드상태 될때 이 함수 실행
- ViewController.swift
- 뷰 컨트롤러 역할.
- 사용자가 보는 특정 화면이나 뷰를 제어.
# 변수와 상수
- 변수:
var numOfStudents = 10
- swift가 자동으로 변수 타입을 추론할 때 그 변수는
암시적 타입(implicitly typed)
을 갖는다. 값 보고 그걸 기준으로 타입 지정함. 명시적 타입
:var numOfItems:Int = 77
- swift가 자동으로 변수 타입을 추론할 때 그 변수는
- 상수:
let Pi = 3.1415
# 함수
func randomInt(min:Int, max:Int)->Int
{
return min + Int(arc4random_uniform(UInt32(max-min+1)))
}
//중첩 함수
func nested(i:Int, j:Int)
{
func printAnswer(answer:Int)
{
println("\(answer)")
}
var sum = i+j
printAnswer(sum)
}
# 열거형
enum Day
{
case Mon
case Tue
...
vase Sun
}
var firstDay = Day.Mon
firstDay = .Tue //firstDay가 Day타입으로 이미 선언되어서 .만 찍고 접근 가능.
# 클래스
class Dog
{
//속성
var Name:String
var Breed:String
var Age:Int
//initializer
init(name:String, breed:String, age:Int)
{
Name = name
Breed = breed
Age = age
}
//메서드
func sit()
{
println("\(name) is sitting")
}
func getAge()->Int
{
return Age
}
func bark()
{
}
}
let aDog = Dog(name:"Merry", breed:"Coolie", age:8)
aDog.sit()
//Dog클래스를 상속받은 Beagle클래스
class Beagle:Dog
{
override func bark()
{
println("KAKA")
}
func makeMess()
{
println("MESSSSSS")
}
}
- initializer
- 특별한 형태의 클래스 메서드. init키워드로 정의.
- 클래스의 인스턴스를 생성할 때마다 매번 실행됨.
- 클래스의 속성을 초기화하며, 클래스의 인스턴스를 생성할 때 전달될 필요가 있는 인자를 받음.
# 프로토콜
- 다른 프로그래밍언어에서 인터페이스라고도 한다.
- 프로토콜에는 그것을 사용하는 클래스에 반드시 있어야 하는 특정 속성과 메서드를 정의.
protocol Travel{
function move()
}
class Person:Travel {
//반드시 구현해줘야 함.
func move(){
println("Person is walking")
}
}
# 익스텐션
extension Double {
var toFahrenheit : Double{return self*9/5+32}
var toCelcius : Double{return self-32*5/9}
}
let temp:Double = 0
# 연산자 오버로딩
//구조체 - 간단한 값의 집합을 캡슐화. 속성과 메서드를 포함할 수 있다는 점에서 클래스와 유사
struct Vector {
var x=0
var y=0
var z=0
}
var v1 = Vector(x:5, y:8, z:5)
# 제네릭
- 코드의 반복/중복 문제 해결
//T:인자의 타입. equatable은 모든 인자들의 타입이 같다는 것을 의미.
func isEqual<T: Equatable>(a:T, b:T)->Bool {
return a == b
}
isEqual(3,3)
isEqual(3.3, 3.5)
isEqual(true, false)