ProgramingTip

Xcode 플레이 그라운드는 Sources 폴더의 신속한 파일에 액세스 할 수 없습니다.

bestdevel 2020. 12. 31. 23:35
반응형

Xcode 플레이 그라운드는 Sources 폴더의 신속한 파일에 액세스 할 수 없습니다.


방금 Xcode 6.3으로 업그레이드하여 Playgrounds에 새로운 것을 제공했습니다. 새 플레이 그라운드를 만들고 프로젝트 탐색기를 열면 Sources 폴더가 표시되고 그 안에 "SupportCode.swift"파일이 있습니다. 해당 파일의 맨 위에

이 파일 (및이 플레이 그라운드의 소스 디렉토리에있는 다른 모든 Swift 소스 파일)은 .playground에서 자동으로 사용할 수있는 프레임 워크로 사전 설치됩니다.

거기에 기능을 넣는데 내 놀이터에서 사용할 수 없습니다. 내가 도대체 ​​뭘 잘못하고있는 겁니까? SupportCode.swift 파일을 수동으로 수행해야합니까? 어떻게?


소스 폴더의 클래스, 메소드 및 속성에 공용 액세스 속성 을 추가 하여 컴파일러에 의해 별도의 모듈로 취급하는 기본 플레이 그라운드 파일에서 액세스 할 수 있습니다.


플레이 그라운드는 테스트 실행에 좋습니다. 모든 코드를 Sources디렉터리에 각 테스트에 대해 공개적으로 액세스 할 수있는 '테스트'클래스를 하나씩 존재합니다. 그런 다음 놀이터에서 공개적으로 액세스 할 수있는 테스트를 실행합니다.

playground

Test1.run()
Testx.run()
...

Sources/Test1.swift

public class Test1 {      
  public static func run() {
    let my_class = MyClass()
    let result = my_class.do_something()
    print(result)
  }
}

Sources/MyClass.swift

class MyClass {
  func do_something() -> String {
    return "lol"
  }
}


Source 폴더에 .swift 파일을 만들 때 언급했듯이 플레이 그라운드 코드에서 자동으로 사용할 수 있습니다. 이 파일의 다른 부분에 대한 액세스를 제어하기 위해 다음과 같은 액세스 레벨을 수정하여 사용할 수 있습니다. public, internal& private.

에 따르면 스위프트 프로그래밍 언어 액세스 제어

대부분의 경우 기본 액세스 수준 internal은 모듈 내부에서 액세스 할 수 있습니다 외부에서는 액세스 할 수 없습니다.

즉, 액세스 할 수 없습니다.자가없는 클래스를 선언하면 소스 폴더의 다른 파일에서 액세스 할 수 있습니다 플레이 그라운드의 기본 파일에는 액세스 할 수 있습니다. 반면에 공용 한정 튼 사용하여 클래스를 선언하면 두 경우 모두 액세스 할 수 있습니다.

실제 사용을 위해 : Singleton 구현을 만들어 보겠습니다. 먼저 : 다음 코드를 사용하여 'Singy.swift'라는 소스 폴더에 새 파일을 만듭니다.

public class Singy {
    public var name = ""
    private static var instance: Singy?
    private init() {}

    public static func getSingy() -> Singy {
        if Singy.instance == nil {
            Singy.instance = Singy()
        }
        return Singy.instance!
    }
}

둘째 : 놀이터에서

var s1 = Singy.getSingy()
var s2 = Singy.getSingy()
s1.name = "One"
print(s2.name)

모두 s1s2같은 인스턴스를 참조하지만,이 클래스 내에서만

참조 URL : https://stackoverflow.com/questions/29637444/xcode-playgrounds-cant-access-swift-files-in-sources-folder

반응형