小编hel*_*on3的帖子

检测符合协议的对象的类?

我有一系列符合特定协议的类.例如:

@protocol Consumable
@end
Run Code Online (Sandbox Code Playgroud)

以及几个班级之一:

@interface LivingEntity : Entity<Consumable>
...
Run Code Online (Sandbox Code Playgroud)

在应用程序的其他部分,我检查对象是否conformsToProtocol,并使用以下方法投射它们:

id<Consumable> consumable = (id<Consumable>) something;
Run Code Online (Sandbox Code Playgroud)

问题是,consumable然后交给几种方法.如果consumableLivingEntity类的实例,则其中一个需要额外的逻辑.

但是,没有办法检查是否[consumable class] == [LivingEntity class].

我怎样才能检查它是哪一堂课?似乎协议强制转换阻止我使用NSObject方法.

objective-c ios

2
推荐指数
1
解决办法
718
查看次数

过滤产生字符的按键事件

我只需要跟踪keyup产生字符的按键事件。我需要keyup(跟踪所有键)over keypress(仅跟踪产生字符的键)的原因是因为我的逻辑必须在字符出现在 DOM 中之后运行。

我的逻辑在添加到contenteditable(TinyMCE) 时对内容进行样式设置,但我无法执行此操作keypress,因为内容实际上尚未添加。

MDN 文档keyup提到了该char属性,这听起来像是我想要的,但至少在 Chrome 中,它始终是undefined.

我需要支持 IE10+、现代 Chrome/Firefox,如果这很重要的话。

html javascript

2
推荐指数
1
解决办法
671
查看次数

Git多个发布分支,构建自动增量修订号

我一直在使用git已经有一段时间了解提交是如何工作的,标签等等.我真的很喜欢在使用git tag -a 1.0.0之后能够看到递增的修订版号,但是有一些问题:

  • 它标记所有内容,因此在历史记录中共享该标记的任何未来工作都将反映标记,除非重新标记.
  • 这比我想要将提交标记为发布点,然后为维护创建一个新分支要多一些工作.

我的目标如下:

  • 开发产品.为每个稳定版本创建分支,以便为次要版本执行仅维护工作.
  • 由于上述原因,不使用tags/git describe来增加数字.
  • 还有一些方法可以自动设置内置编号,版本号,ANYTHING,这是人性化的.

我最大的问题是,当将代码推送到服务器时,SHA1提交ID不会向用户提供任何按时间顺序的指示.我愿意使用第三方工具来计算分支机构中的修订数量等等.

有任何想法吗?

git deployment

1
推荐指数
1
解决办法
851
查看次数

如何在cocos2d中隐藏标签(CCLabel)一段时间后?

我使用CCLabel添加了一个标签到我的图层.现在我希望它在一段时间后消失(如2秒).我怎么能让它消失?

CCLabel *labelPerfectDraw = [CCLabel labelWithString:@"Perfect Draw" fontName:@"Marker Felt" fontSize:30 ];
        labelPerfectDraw.color = ccc3(0x00, 0x00, 0xff);
        labelPerfectDraw.position = ccp(windowSize.width/2, windowSize.height/2+80);
        [self addChild:labelPerfectDraw];
Run Code Online (Sandbox Code Playgroud)

我以上面的方式添加了标签.请告诉我如何处理它?

cocoa-touch cocos2d-iphone iphone-sdk-3.0

1
推荐指数
1
解决办法
2752
查看次数

转换和传递协议作为方法参数

制作一个生物可以与他人一起复制的游戏.我已经定义了一个协议,以便某些生物可以繁殖.

但是,我似乎无法弄清楚如何正确施放和传递生物

// Creature may breed with any other creature allowed to breed
@protocol Mateable
-(void)mateWith:(id<Mateable> *)entity;
@end
Run Code Online (Sandbox Code Playgroud)

当玩家触摸一个生物时,我有逻辑施放该生物并传递它:

// If user taps on a create that can breed, we make it happen...
if( [touching conformsToProtocol:@protocol(Mateable)] ){
    id<Mateable> mate = (id<Mateable>) touching;
    [player mateWith:mate];
}
Run Code Online (Sandbox Code Playgroud)

但是,我收到一个错误:

Cannot initialize the parameter of type '__autorelease <id>Mateable' with an lvalue of type '__strong id<Mateable>'

我怎样才能正确地施放并传递生物作为参数?

objective-c ios

1
推荐指数
1
解决办法
47
查看次数

将提交移动到新分支,从推出的repo上的当前分支中删除

我是一个团队的几个git存储库的经理,经常遇到这个问题.当他们应该创建一个功能分支时,另一个团队成员意外地在master或staging分支上提交他们的工作.

那些提交还没有准备好被推送,所以我被卡住了.我知道如何在创建一个新分支后重置当前分支,但是当事物全部通过远程仓库推送时,它无法正常工作.

我需要一种方法将最后一个x号提交从分支A移动到新分支B,从分支A中删除这些提交(以允许我安全地推回到远程仓库的方式).当分支B完成时,我需要能够将它合并回分支A.

我已经找到了大量的建议,但是没有一个能够在已经推送的提交中正常工作.

git

0
推荐指数
1
解决办法
1426
查看次数

将泛型传递给也使用泛型的外部方法

我正在包装一个使用泛型的方法,但我不知道如何正确传递泛型.

我有一个FindAsset方法应该接受一般类型,就像它LoadAsset一样.

public T FindAsset<T>(string assetName) {
    T match;

    foreach (AssetBundle bundle in assets) {
        if (bundle.Contains(assetName)) {
            match = bundle.LoadAsset<???>(assetName);
        }
    }

    return match;
}
Run Code Online (Sandbox Code Playgroud)

我只是不确定如何正确传递泛型类型LoadAsset.该方法还有一个签名,它接受一个Type参数作为参数,但在那种情况下,我看不到正确转换对象的方法.

我希望这个用法可以简单 myclass.FindAsset<Sprite>(assetName);

c# generics

0
推荐指数
1
解决办法
102
查看次数