#ios #swift #game-engine
#iOS #swift #игровой движок
Вопрос:
import Foundation
class ObjectPool <T:GameEntity> : NSObject
{
var counter = 0
let objects:T[]
init( poolCapacity:Int )
{
objects = Array<T>(count: poolCapacity, repeatedValue: T())
super.init()
}
func getObject() -> T?
{
if let counterObject = self.objects[counter] as T? {
if !counterObject.alive {
counter
return counterObject
}
}
for (index, poolable) in enumerate(self.objects) {
if !poolable.alive {
counter = index 1
poolable.alive = true
return poolable
}
}
NSException(name: "Empty Pool", reason: "Trying to get an object from a pool that is drained", userInfo: nil).raise()
return nil
}
func returnObject( pooledObject:T )
{
pooledObject.alive = false
}
func eachAlive ( lamda:(T -> Void) )
{
for poolable in self.objects {
if poolable.alive {
lamda(poolable)
}
}
}
}
Я написал некоторый код для создания пула объектов в Swift. ‘GameEntity’ — это просто класс, который подкласс SKSpriteNode и имеет свойство ‘alive’. Мне интересно, есть ли какие-либо большие проблемы в коде, который я написал, или это проблема компилятора. Ошибка компилятора приведена ниже:
1. While emitting IR for source file /Users/joey.clover/Documents/Personal Projects/Flappy Bird/Flappy Bird/Utils/ObjectPool.swift
2. While emitting class metadata for 'ObjectPool' at /Users/joey.clover/Documents/Personal Projects/Flappy Bird/Flappy Bird/Utils/ObjectPool.swift:11:1
<unknown>:0: error: unable to execute command: Segmentation fault: 11
<unknown>:0: error: swift frontend command failed due to signal (use -v to see invocation)
Command /Applications/Xcode6-Beta.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/bin/swift failed with exit code 254
Спасибо, Джоуи.
Комментарии:
1. Это не столько ошибка компилятора, сколько сбой компилятора. Вы должны открыть радар с кодом и журналом сбоев.
2. Как мне открыть радар?
4. Вы импортировали sprike kit в свой проект?
5. Спасибо, Брайан и Гохан, я импортирую его в класс GameEntity, если это что-нибудь значит?