Xcode Playground가 Sources 폴더의 swift 파일에 액세스할 수 없음
방금 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"
}
}
소스 폴더에 .swift 파일을 만들 때 언급한 것처럼 플레이그라운드 코드에서 자동으로 사용할 수 있습니다.이 파일의 다른 부분에 대한 액세스를 제어하려면 다음과 같은 액세스 수준 수정자를 사용할 수 있습니다.public
,internal
&private
.
대부분의 경우 기본 액세스 수준은 다음과 같습니다.internal
모듈 내부에서는 액세스할 수 있지만 외부에서는 액세스할 수 없습니다.
즉, 액세스 한정자가 없는 클래스를 선언하면 소스 폴더의 다른 파일에서 액세스할 수 있지만 플레이그라운드의 기본 파일에서는 액세스할 수 없습니다.반면에 공개 수식자가 있는 클래스를 선언하면 두 경우 모두 액세스할 수 있습니다.
실용적인 사용을 위해: 싱글턴 구현을 먼저 만들자: 소스 폴더에 다음 코드를 사용하여 '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)
둘다요.s1
그리고.s2
동일한 인스턴스를 참조하지만 클래스 내에서만 생성됩니다.
언급URL : https://stackoverflow.com/questions/29637444/xcode-playgrounds-cant-access-swift-files-in-sources-folder
'programing' 카테고리의 다른 글
Swift에서 REST API 호출 (0) | 2023.07.31 |
---|---|
Oracle: max(id)+1과 sequence.nextval의 차이 (0) | 2023.07.31 |
최근 기록을 보기 위한 테일 도커 로그(전체가 아님) (0) | 2023.07.31 |
UIView의 모든 하위 보기와 하위 보기 및 하위 보기를 순환하려면 어떻게 해야 합니까? (0) | 2023.07.31 |
트랜잭션 내에서 "GO" 사용 (0) | 2023.07.31 |