1. Class, 객체, 인스턴스
클래스로부터 만들어진 객체를 인스턴스라고 한다.
Property : 스위프트에서 변수가 클래스 안으로 들어가면 Property라고 한다.
Method : 스위프트에서 함수가 클래스 안에 있으면 Method라고 한다
2. Property 생성하기
1
2
3
|
class Man{
var age : Int
}
|
cs |
Man이라는 클래스를 생성하고 Int형 프로퍼티 age를 생성한 모습이다.
생성과 동시에 스위프트에서 에러를 확인할 수 있다.
"Stored property 'age' without initial value prevents synthesized initializers"
2행에 선언된 age는 Stored porperty로 저장공간이 있는 프로퍼티이다. 때문에 Swift는 age의 값을 초기화 또는 initalizer(생성자)를 통해 오류를 해결할 수 있다.
방안1. age 값을 초기화 하기
1
2
3
4
5
|
class Man{
var age : Int = 0 //age = stored property
var age1 : Int?
var age2 : Int!
}
|
cs |
방안2. 는 인스턴스 이후 나옴니다.
3. Instance 변수 생성하기
인스턴스 변수를 생성하기 전에 맨의 프로퍼티와 메소드를 다음과 같이 정의합니다.
1
2
3
4
5
6
7
8
9
10
11
|
class Man{
var age : Int = 2 //Stored Property
var weight : Double = 3.5 //Stored Property
func display(){ //instance method
print("나이 \(age), 몸무게 =\(weight)")
}
class func cM(){ //클래스 메소드, class를 지우고 static을 사용가능
print("클래스 메서드입니다.")
}
}
|
cs |
2~3행 : age와 weight는 Int형과 Double형을 가졌고 2와 ,3.5로 초기화된 Stored Porperty입니다.
4행 : instance가 사용하는 method입니다.
7행 : class가 사용하는 method입니다.
1
2
3
4
5
6
7
|
var kim : Man = Man() //인스턴스, ()는 initializer
kim.display() //인스턴스가 display를 호출
//.display는 인스턴스 메소드 이다
kim.cM() //--> Static member 'cM' cannot be used on instance of type 'Man'
Man.cM() //클래스 메소드는 클래스가 호출한다.
}
|
cs |
1행 : kim이라는 이름을 가진 Man Class를 사용하는 인스턴스 변수를 만듭니다. 우측에 괄호는 initializer라고 합니다.
3행 : class안에 display()메소드를 사용하는 행으로 kim이라는 인스턴스가 display()를 호출합니다.
5행 : Man class안에 cM()메서드를 사용하려 했지만 에러가 발생합니다.
Static member인 cM은 인스턴스 변수에서 사용하지 못한다는 얘기입니다.
class 메서드는 static메서드와 사용 방법이 같은것을 유추할 수 있습니다.
하지만 static메서드는 나중에 나올 상속 과정에서 상속을 받지 않고 class메서드만 상속을 할 수 있습니다.
6행: 5행을 주석처리 하여 에러를 없앤다음 클래스 메서드를 호출하는 행 입니다.
인스턴스를 변수를 만들때 var/let 이름 : 클래스 = 클래스(이니셜라이저)와 같은 형식으로 만들수 있습니다
4. Initializer(생성자)
추후 추가 예정
'IOS > swift' 카테고리의 다른 글
swift - Selector Type (0) | 2019.10.01 |
---|---|
Object -C , Swift 간단 비교 (0) | 2019.10.01 |
2. Swift 기본 창 설명 (0) | 2019.09.10 |
1. Swift 프로젝트 만들기 (0) | 2019.09.10 |
Swift 참고 사이트 (0) | 2019.09.10 |