ios - computed - type property swift




@ property/@ swift에서 이에 상응하는 합성 (4)

저장된 속성 및 인스턴스 변수

Objective-C에 대한 경험이 있다면 클래스 인스턴스의 일부로 값과 참조를 저장하는 두 가지 방법을 제공한다는 것을 알 수 있습니다. 속성 외에도 인스턴스 변수를 속성에 저장된 값의 보조 저장소로 사용할 수 있습니다.

Swift는 이러한 개념을 단일 속성 선언으로 통합합니다. Swift 속성에는 해당 인스턴스 변수가 없으며 속성에 대한 백업 저장소에는 직접 액세스하지 않습니다. 이 접근법은 다른 컨텍스트에서 값에 액세스하는 방법에 대한 혼동을 피하고 속성의 선언을 단순하고 명확한 진술로 단순화합니다. 이름, 유형 및 메모리 관리 특성을 포함한 속성에 대한 모든 정보는 유형 정의의 일부로 단일 위치에 정의됩니다.

신속한 프로그래밍 북 :

    struct FixedLengthRange {
    var firstValue: Int
    let length: Int
    }

    var rangeOfThreeItems = FixedLengthRange(firstValue: 0, length: 3)

우리는 다음과 같이 클래스간에 데이터를 전달하기 위해 property 을 선언 property .

.h file (interface file)
@property (nonatomic) double topSpeed;

.m file (implementation file)
@synthesize topSpeed;

이제 interface 클래스가 없으며 .swift 클래스간에 데이터를 전달하는 방법은 무엇입니까?


Objective-C의 속성은 Swift의 속성과 일치합니다. Objective-C와 Swift에서 속성을 구현하는 두 가지 방법이 있습니다.

  1. Objective C의 합성 / 자동 합성 속성 - Swift에서 이러한 속성을 "저장된 속성"이라고합니다. 함수 본체에 지역 변수를 선언 할 때와 마찬가지로 클래스 var topSpeed : Double 또는 let topSpeed : Double = 4.2 를 클래스 선언으로 선언하기 let topSpeed : Double = 4.2 됩니다. Swing에는 인스턴스 변수가 없으므로 백업 인스턴스 변수의 이름을 지정하지 않아도됩니다. 항상 인스턴스 변수 대신 속성을 사용해야합니다.
  2. Objective-C에서 수동으로 구현 된 속성 - Swift에서 "계산 된 속성"이라고합니다. var topSpeed : Double { get { getter code here } set { setter code here } } ( readwrite 속성) 또는 var topSpeed : Double { getter code here } ( readonly 속성 용)과 같은 클래스 선언에서 선언합니다.

등록 정보 사용.

신속한 프로그래밍 가이드 :

저장된 속성 및 인스턴스 변수

Objective-C에 대한 경험이 있다면 클래스 인스턴스의 일부로 값과 참조를 저장하는 두 가지 방법을 제공한다는 것을 알 수 있습니다. 속성 외에도 인스턴스 변수를 속성에 저장된 값의 보조 저장소로 사용할 수 있습니다.

Swift는 이러한 개념을 단일 속성 선언으로 통합합니다. Swift 속성에는 해당 인스턴스 변수가 없으며 속성에 대한 백업 저장소에는 직접 액세스하지 않습니다. 이 접근법은 다른 컨텍스트에서 값에 액세스하는 방법에 대한 혼동을 피하고 속성의 선언을 단순하고 명확한 진술로 단순화합니다. 이름, 유형 및 메모리 관리 특성을 포함한 속성에 대한 모든 정보는 유형 정의의 일부로 단일 위치에 정의됩니다.


적어도 질문의 일부는 주어진 클래스의 인터페이스를 다른 클래스와 통신하는 것과 관련이 있다고합니다. Java와 마찬가지로 (C, C ++ 및 Objective-C와는 달리) Swift는 인터페이스를 구현과 분리하지 않습니다. 다른 곳에 정의 된 기호를 사용하려면 헤더 파일을 import 오지 마십시오. 대신 다음과 같은 모듈import .

import Foundation
import MyClass

다른 클래스의 속성에 액세스하려면 해당 클래스를 가져옵니다.





ios8