Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/objective-c/22.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Objective c 通过发送“创建工厂类”;“类型”;_Objective C_Ios_Class_Cocos2d Iphone - Fatal编程技术网

Objective c 通过发送“创建工厂类”;“类型”;

Objective c 通过发送“创建工厂类”;“类型”;,objective-c,ios,class,cocos2d-iphone,Objective C,Ios,Class,Cocos2d Iphone,我正在做一个cocos2d游戏。它有几个类是从CCSprite派生出来的-敌人、投射物等。对于每个子类,它们需要进一步区分,例如enemy1、enemy2等。我可以创建一个类,然后创建它的子类,可以通过类似于[enemy1敌人]的方式创建,其中+(id)敌人创建一个敌人对象,然后定制它并返回它,但我要做的是告诉敌方类创建一个实例,然后给它我想要的属性(图像、生命点、可见等等),然后返回它。我想象这样一种方法 + (id)enemyWithType:(int)aType { Enemy *

我正在做一个cocos2d游戏。它有几个类是从CCSprite派生出来的-敌人、投射物等。对于每个子类,它们需要进一步区分,例如enemy1、enemy2等。我可以创建一个类,然后创建它的子类,可以通过类似于[enemy1敌人]的方式创建,其中+(id)敌人创建一个敌人对象,然后定制它并返回它,但我要做的是告诉敌方类创建一个实例,然后给它我想要的属性(图像、生命点、可见等等),然后返回它。我想象这样一种方法

+ (id)enemyWithType:(int)aType
{
    Enemy *enemy = nil;
    switch (aType) {
        case 1:
            // set up the first enemy type
            [enemy initWithFile:@"enemy1.png"];
            [enemy setVisible:YES];
            [enemy setHitPoints:10];
            break;
        case 2:
            // set up the second type
            [enemy initWithFile:@"enemy2.png"];
            [enemy setVisible:NO];
            [enemy setHitPoints:5];
            break;
        default:
            break;
    }
我会通过打电话来调用它

[Enemy enemyWithType:1];
或者类似的。这样做对吗?我需要这个来适应所有的课程。实际上,我的播放器会有一个类似于
projectletype
的属性,因此当我发射射弹时,我会向射弹类请求该类型的射弹

这样做对吗

基本上,是的。这是工厂方法模式。您还可以使用来自敌人的派生类,如僵尸类、龙类或类似的类。它使代码变得干净

这样做对吗

基本上,是的。这是工厂方法模式。您还可以使用来自敌人的派生类,如僵尸类、龙类或类似的类。它使代码变得干净


谢谢,@Kazuki-不过我并不完全理解这里的内存管理。敌方*敌方=无为我分配内存,以便我以后可以
init
实例?它似乎起作用了。既然我没有分配它,我拥有它吗?我应该添加一个
自动释放吗?
我强烈建议你先读一读。我已经读过了——并不是说我完全理解其中的所有内容。苹果提供了很多好的例子来说明什么时候你拥有什么,什么时候你不拥有什么,但我看不到这一点。什么是敌人*敌人=零实际做什么?它是
alloc吗?
我猜这会生成一个
自动释放的
对象,但我不确定。我继续并开始了一个新问题来处理这个问题。。。谢谢谢谢,@Kazuki-不过我并不完全理解这里的内存管理。敌方*敌方=无为我分配内存,以便我以后可以
init
实例?它似乎起作用了。既然我没有分配它,我拥有它吗?我应该添加一个
自动释放吗?
我强烈建议你先读一读。我已经读过了——并不是说我完全理解其中的所有内容。苹果提供了很多好的例子来说明什么时候你拥有什么,什么时候你不拥有什么,但我看不到这一点。什么是敌人*敌人=零实际做什么?它是
alloc吗?
我猜这会生成一个
自动释放的
对象,但我不确定。我继续并开始了一个新问题来处理这个问题。。。谢谢