1주차
https://bbiguduk.gitbook.io/swift/language-guide-1/the-basics
기본 (The Basics) | Swift
일반적인 종류의 데이터로 동작하고 기본 구문을 작성합니다. Swift는 정수에 사용되는 Int, 부동소수점(floating-point) 값에 사용되는 Double, Boolean 값을 나타내는 Bool, 그리고 텍스트를 나타내는 String
bbiguduk.gitbook.io
shift cmd 3
shift cmd 4 - 선택캡쳐
shift cmd 4 space - 원하는 브라우저만 캡쳐


물론입니다! 코드 한 줄 한 줄에 주석을 달아서 쉽게 설명해드리겠습니다. 주석을 통해 각 줄의 역할을 자세히 설명해드릴게요.
1. SKNode 확장 (unarchiveFromFile)
// SKNode 클래스를 확장하여, .sks 파일을 불러오는 메서드를 추가합니다.
extension SKNode {
// 파일 경로로부터 SKNode 객체를 복원하는 클래스 메서드
class func unarchiveFromFile(_ file: String) -> SKNode? {
// .sks 파일의 경로를 찾습니다.
// Bundle.main.path는 앱의 리소스에서 파일을 찾는 메서드입니다.
let path = Bundle.main.path(forResource: file, ofType: "sks")
// sceneData는 파일에서 읽어온 데이터를 저장할 변수입니다.
let sceneData: Data?
// 파일을 읽어오는 데 실패할 수 있기 때문에, do-catch 문을 사용해 오류를 처리합니다.
do {
// 파일을 읽어서 sceneData에 저장합니다.
sceneData = try Data(contentsOf: URL(fileURLWithPath: path!), options: .mappedIfSafe)
} catch _ {
// 오류가 발생하면 sceneData는 nil로 설정됩니다.
sceneData = nil
}
// Data를 NSKeyedUnarchiver로 복원할 준비를 합니다.
// NSKeyedUnarchiver는 객체를 디코딩할 때 사용하는 클래스입니다.
let archiver = NSKeyedUnarchiver(forReadingWith: sceneData!)
// "SKScene" 클래스를 복원할 때 SKNode를 사용할 수 있도록 설정합니다.
// 이 단계에서 `self.classForKeyedUnarchiver()`는 현재 클래스(SKNode)가 복원될 클래스로 지정됩니다.
archiver.setClass(self.classForKeyedUnarchiver(), forClassName: "SKScene")
// 복원된 객체를 GameScene으로 캐스팅하여 반환합니다.
let scene = archiver.decodeObject(forKey: NSKeyedArchiveRootObjectKey) as! GameScene
// 복원 작업을 끝내고 리소스를 정리합니다.
archiver.finishDecoding()
// 복원된 장면을 반환합니다.
return scene
}
}
이 코드의 핵심은 .sks 파일에서 저장된 장면을 복원하는 것입니다. SKNode를 확장하여 게임 장면을 읽고 복원하는 메서드를 작성했습니다.
2. GameViewController 클래스
// UIViewController를 상속받은 GameViewController 클래스입니다.
// 이 클래스는 게임 화면을 관리합니다.
class GameViewController: UIViewController {
// 뷰가 로드된 후에 호출됩니다.
// 게임 화면을 설정하는 코드가 여기에 있습니다.
override func viewDidLoad() {
super.viewDidLoad()
// "GameScene"이라는 이름의 .sks 파일을 복원하여 scene에 저장합니다.
if let scene = GameScene.unarchiveFromFile("GameScene") as? GameScene {
// 현재 뷰를 SKView로 캐스팅하여 게임 화면을 설정할 준비를 합니다.
let skView = self.view as! SKView
// FPS(초당 프레임 수)를 화면에 표시하도록 설정합니다.
skView.showsFPS = true
// 화면에 표시되는 노드의 개수를 표시하도록 설정합니다.
skView.showsNodeCount = true
// siblingOrder를 무시하고 렌더링 최적화합니다.
skView.ignoresSiblingOrder = true
// 화면 크기에 맞게 장면을 자동으로 스케일링합니다.
// .aspectFill은 화면 비율을 유지하면서 화면을 꽉 채우도록 설정합니다.
scene.scaleMode = .aspectFill
// 게임 장면을 SKView에 표시합니다.
skView.presentScene(scene)
}
}
}
이 코드의 핵심은 viewDidLoad()에서 게임 장면을 불러와 SKView에 표시하는 것입니다. 게임 장면은 .sks 파일에서 복원되어, SKView에 올바르게 표시됩니다.
3. 기기 회전 및 메모리 관리
// 기기가 회전할 때 화면이 자동으로 회전하도록 허용합니다.
override var shouldAutorotate: Bool {
return true
}
// 어떤 화면 회전 방향을 지원할지 설정합니다.
// iPhone은 상단을 아래로 향한 회전(거꾸로 회전)은 지원하지 않으며,
// iPad는 모든 회전 방향을 지원합니다.
override var supportedInterfaceOrientations: UIInterfaceOrientationMask {
if UIDevice.current.userInterfaceIdiom == .phone {
return UIInterfaceOrientationMask.allButUpsideDown
} else {
return UIInterfaceOrientationMask.all
}
}
// 메모리 경고가 발생했을 때 호출되는 메서드입니다.
// 이 메서드 안에서 사용되지 않는 자원을 해제하여 메모리 문제를 해결할 수 있습니다.
override func didReceiveMemoryWarning() {
super.didReceiveMemoryWarning()
// 사용하지 않는 데이터나 이미지 등을 해제합니다.
}
이 코드의 핵심은:
- 기기 회전: 앱이 자동으로 화면 회전을 처리하고, 각 기기(iPhone, iPad)에 따라 회전 방향을 달리 설정합니다.
- 메모리 경고: 시스템에서 메모리가 부족할 때 불필요한 자원을 해제하는 메서드입니다.
요약
- SKNode 확장: .sks 파일에서 게임 장면을 복원하는 메서드를 추가했습니다.
- GameViewController 클래스: 게임 장면을 불러와 SKView에 표시하는 역할을 합니다.
- 기기 회전 및 메모리 관리: 기기 회전 시 화면을 적절하게 회전시키고, 메모리가 부족할 때 자원을 해제하는 기능을 추가했습니다.
각 줄에 주석을 달아서 코드가 무엇을 하는지 이해하기 쉽게 설명했습니다. Swift와 SpriteKit에 대해 조금 더 친숙해지셨기를 바랍니다!
mac 'pages'사용
2주차
compiler
Swift Online Playground
SwiftFiddle is an online playground for creating, sharing and embedding Swift fiddles (little Swift programs that run directly in your browser).
swiftfiddle.com
nightly - 검토중인 버전
변수 : var, 상수 : let
var myNum : Int = 10
초기값이 존재한다면 명시할 필요X
= 입력시 ' = '양쪽 공백이 반드시 필요(공백의 갯수는 무관)

var a X
var a = 10. O
var a : Int. O
https://developer.apple.com/documentation/swift/print(_:separator:terminator:)
print(_:separator:terminator:) | Apple Developer Documentation
Writes the textual representations of the given items into the standard output.
developer.apple.com
문법 참고할 때 알아두면 좋음
terminator와 separator는 print() 함수에서 출력 형식을 조정할 수 있게 해주는 매개변수입니다. 이 두 가지를 이해하면 여러 값을 출력할 때 더 유연하게 제어할 수 있습니다.
1. separator (구분자)
- 설명: 여러 개의 값을 print() 함수로 출력할 때 각 값들 사이를 구분하는 문자입니다. 기본적으로 print()는 각 값 사이를 공백(" ")으로 구분하여 출력하지만, separator를 사용하면 원하는 다른 문자로 값을 구분할 수 있습니다.
- 기본값: " " (공백)
2. terminator (끝 문자를 변경)
- 설명: print() 함수는 기본적으로 출력 후 자동으로 줄 바꿈을 추가합니다 (\n). 하지만 terminator를 사용하면 줄 바꿈 대신 다른 문자나 문자열을 출력할 수 있습니다.
- 기본값: "\n" (줄 바꿈)



let x = 10
x = 15
immutuable(변환 불가능)
var y = 10
y = 10
mutable(변환 가능)
'computing' 카테고리의 다른 글
| 20250915_iOS_3 (0) | 2025.09.15 |
|---|---|
| 20250911_android_2 (0) | 2025.09.11 |
| 20250904_안드로이드_1 (0) | 2025.09.04 |
| 20250901 - iOS_1 (0) | 2025.09.01 |
| java 코드정리 - default (0) | 2025.06.12 |