首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >子类CCSpriteBatchNode对象为空

子类CCSpriteBatchNode对象为空
EN

Stack Overflow用户
提问于 2013-11-16 19:33:04
回答 1查看 50关注 0票数 0

我继承了CCSpriteBatchNode来创建一个符合NSCoding的对象。我主要对CCSpriteBatchNode的字符串名称感兴趣。在设置了断点之后,我意识到对象的字符串名总是为nil。我有一种感觉,我的被覆盖的方法可能是一个促成因素,但我不是很确定。请参考以下相关代码:

SpriteBatchNode接口:

代码语言:javascript
复制
@interface SpriteBatchNode: CCSpriteBatchNode {
NSString* batchImageName;
}

SpriteBatchNode实现:

代码语言:javascript
复制
const NSUInteger defCapacity = 29;

@implementation SpriteBatchNode

@synthesize batchImageName;

+(id)batchNodeWithFile:(NSString*) imageFile
{
return [[self alloc] initWithFile:imageFile capacity:defCapacity];
}

-(id)initWithFile:(NSString *)fileImage {
self = [super initWithFile:fileImage capacity:defCapacity];

if (!self) return nil;

batchImageName = fileImage;

return self;
}

-(id)initWithCoder:(NSCoder *)aDecoder
{
NSString* spriteBatchNodeFileImage = [[aDecoder decodeObjectForKey:@"batchImageName"] copy];

self = [super initWithFile:spriteBatchNodeFileImage capacity:defCapacity];
if (!self) return nil;

return self;
}

-(void)encodeWithCoder:(NSCoder *)aCoder
{
   [aCoder encodeObject:batchImageName forKey:@"batchImageName"];
}

@end
EN

回答 1

Stack Overflow用户

发布于 2013-11-16 21:19:29

如果你没有使用ARC,我在这里看到两个问题:

  • batchImageName字符串不是retained
  • batchNodeWithFile:没有将自动释放发送到返回的实例

除此之外,你使用的是一种不同寻常的init风格,常见的风格是:

代码语言:javascript
复制
if (self)
{
    batchImageName = fileImage;
}
return self;

检查self是否为nil,如果是,则返回nil,这有点多余。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/20017911

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档