小编Cha*_*had的帖子

Swift Generics&Upcasting

我对Swift中的泛型有一个快速的问题.问题是我正在尝试存储一个变量,该变量将泛型作为参数,但无法将其强制转换为受其限制的类型.最好用简短的例子解释一下:

class Foo { }

class Thing<T: Foo> {
    func produceBar() -> Bar {
        return Bar(aThing: self as! Thing<Foo>)
    }
}

class Bar {
    var thing: Thing<Foo>

    init(var aThing: Thing<Foo>) {
        self.thing = aThing
    }
}
Run Code Online (Sandbox Code Playgroud)

上面的代码产生错误: "Cast from Thing<T> to unrelated type Thing<Foo> always fails"

不应该永远不会失败,因为T被限制为Foo的子类?我一定是误解了Swift中泛型的工作方式,任何指导或帮助都会非常感激!

generics ios swift

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

CADisplayLink前向声明错误

好的,所以我已经完全被这个编译器错误困扰了几个小时,问题是我所做的所有谷歌搜索都说它应该按我的方式工作!我正在关注iPhone游戏开发的书籍教程,由于随机的编译错误,我陷入了第二章.

注意:我目前正在使用iOS 5 beta在XCode 4.1中运行和测试

这是宣言:

在头文件中:

@interface GameController : NSObject
{
    CADisplayLink *displayLink;
}

@end
Run Code Online (Sandbox Code Playgroud)

在.m文件中

- (void)startGame {
    displayLink = [displayLinkWithTarget:self selector:@selector(update:)];  // THROWS ERROR
    [displayLink addToRunLoop:[NSRunLoop currentRunLoop] forMode:NSDefaultRunLoopMode];  // THROWS ERROR
}

- (void)update:(CADisplayLink *)sender {
    // TODO: actually do something..
}
Run Code Online (Sandbox Code Playgroud)

这两个都抛出了错误:类消息的Receiver'CADisplayLink'是一个前向声明

但是在线的所有帖子都有完全相同的行.错误类型是"自动引用计数问题".

任何帮助是极大的赞赏!

iphone compiler-errors objective-c cadisplaylink ios5

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