본문 바로가기

전체 글330

메모리 관리 언리얼에선 UObject 클래스로부터 파생된 클래스와 액터의 메모리를 자동으로 관리해준다. 수집된 잔여 메모리(GC)를 시스템에 반환하지 않고 풀링하고, 새로운 메모리를 필요로 할 때 메모리 풀에서 먼저 가져온다. UObject 에서 파생되지 않은 클래스를 작성할 땐 TSharedPtr, TWeakPtr을 사용하자. UObject 에서 포인터는 UPROPERTY를 추가해서 관리하기 쉽도록 하자. 메모리 생성 UObject를 생성할 때는 NewObject 를 사용하자. Actor를 생성할 때는 SpawnActor 를 사용하자. 메모리 해제 UObject 강제 메모리 해제 : UObject::ConditionalBeginDestroy() 함수 호출.(이 후 BeginDestory/FinishDestory 가.. 2022. 12. 26.
Class extention struct Grade { var letter: Character var points: Double var credits: Double } class Person { var firstName: String var lastName: String init(firstName: String, lastName: String) { self.firstName = firstName self.lastName = lastName } func printMyName() { print("My name is \(firstName) \(lastName)") } } class Student: Person { var grades: [Grade] = [] } let jay = Person(firstName: "Jay", lastName.. 2022. 11. 23.
protocol //protocol: 특정 역할을 하기 위한 메소드, 프로퍼티, 기타 요구사항 등의 정의.. protocol FirstProtocol { var name: String { get set }// 읽기, 쓰기가 동시에 가능한 프로퍼티는 { get set }을 써주어야 함 var age: Int { get }// 읽기만 가능한 프로퍼티 } protocol SecondProtocol { static var someTypeProperty: Int { get set }// 타입프로퍼티를 요구하려면 static을 선언해줘야 함 func someTypeMethod() } // 여러가지 프로토콜을 동시에 채택 가능. 프로토콜에서 요구하는 프로퍼티, 메소드를 정의해주어야함 (struct/class) ProtocolClas.. 2022. 11. 16.
Structure import UIKit struct Person { var firstName: String { // 값이 바뀌기 전 willSet { print("willSet: \(firstName) --> \(newValue)") } // 값이 바뀐 후 didSet { print("didSet: \(oldValue) --> \(firstName)") } } var lastName: String // 변수가 사용되기 전에는 메모리에 올라가지 않는다. 쓰레드에서 애러날 수 있음. lazy var isPopular: Bool = { if fullName == "Jay Park" { return true } else { return false } }() var fullName:String { get { return "\(f.. 2022. 11. 11.
Closure 함수처럼 기능을 수행하는 코드블록 함수와 다르게 이름이 없다 /* { (parameters) -> return type in statement ... } */ // Cho Simple Closure let ChoSimpleClosure = { } ChoSimpleClosure() // 코드 블록을 구현한 Closure let CodeBlockClosure = { print("this is code block") } CodeBlockClosure() // 인풋 파라미터를 받는 Closure let InputParamClosure: (String) -> Void = { name in print("input param is \(name)") } InputParamClosure("closure") // 값을 리.. 2022. 11. 7.
Set // 중복없는 유니크한 아이템을 관리할 때 사용 //var someArray: Array = [1, 2, 3, 1] var someSet: Set = [1, 2, 3, 1, 2] // {1, 2, 3} someSet.isEmpty someSet.count // 3 someSet.contains(4) // false someSet.contains(1) // true someSet.insert(5) someSet // {1, 2, 3, 5} someSet.remove(1) someSet // {2, 3, 5} 2022. 11. 7.