swift 클래스에서 다른 클래스의 변수를 사용하는 법
조회수 1703회
예를 들어 class a{ var aa = 1 }
class b{ print(aa) // 1 aa = 2 print(aa) // 2
}
a클래스의 aa변수를 b에서 사용하는 방법이 있나요?
1 답변
-
class a { var aa = 1 } class b { print(aa) // 1 aa = 2 print(aa) // 2 }
이 코드를 작성하신 것 같은데요.
class
선언 안에서는print()
같은 실행 코드를 넣을 수 없습니다.a
클래스에는 문제가 없으나,b
클래스를 저렇게 정의하면 컴파일 에러가 납니다. 따라서 아래와 같이 수정하셔야 합니다.class a { var aa = 1 } class b { func myMethod() { print(aa) // 1 aa = 2 print(aa) // 2 } }
질문하신 내용은
b
클래스에서a
의 property를 접근하는 방법을 여쭤보셨는데요. 이는 두가지 방법이 있습니다.a
클래스를 init 한 후, 해당 reference에서 Property로 접근한다.a
클래스의aa
property를 Static Property로 변경한다.
1번부터 설명드리면 아래와 같이 됩니다.
class a { var aa = 1 } class b { func myMethod() { // MARK: - Property let firstObject: a = .init() print(firstObject.aa) // 1 firstObject.aa = 2 print(firstObject.aa) // 2 let secondObject: a = .init() print(secondObject.aa) // 1 secondObject.aa = 2 print(secondObject.aa) // 2 firstObject.aa = 3 print(firstObject.aa) // 3 print(secondObject.aa) // 2 } }
firstObject
와secondObject
의 객체들은 reference가 다르기 때문에, 각각aa
의 값이 다릅니다.이제 2번을 설명해 드리면,
class a { var aa = 1 static var bb = 10 } class b { func myMethod() { // MARK: - Property let firstObject: a = .init() print(firstObject.aa) // 1 firstObject.aa = 2 print(firstObject.aa) // 2 let secondObject: a = .init() print(secondObject.aa) // 1 secondObject.aa = 2 print(secondObject.aa) // 2 firstObject.aa = 3 print(firstObject.aa) // 3 print(secondObject.aa) // 2 // MARK: - Static Property print(a.bb) // 10 a.bb = 30 print(a.bb) // 30 print(firstObject.aa) // 3 print(secondObject.aa) // 2 } }
Static Property를 쓰면 init을 안해도 코드 전역에서 접근이 가능합니다.
Swift 공부를 포기하지 마시고 열심히 하셨으면 좋겠습니다.😃
댓글 입력