小编Tad*_*riz的帖子

由其他通用参数约束的通用参数

由于斯威夫特缺乏协方差,我需要一些解决方法.我来自Java世界,所以我本能地尝试从一种类型到其他泛型类型创建约束.

所以我写了下面的课:

class Factory<T: AnyObject> {
    let factoryClosure: () -> T

    init(closure: () -> T) {
        factoryClosure = closure
    }

    init<CHILD: T>(childFactory: Factory<CHILD>) {
        factoryClosure = { () -> T in
            return otherFactory.create()
        }
    }

    func create() -> T {
        return factoryClosure()
    }
}
Run Code Online (Sandbox Code Playgroud)

我希望这个工作得很好.我有T定义,CHILD应该是一个子类T.然而,Swift编译器不同意并在行上显示以下错误init<CHILD: T>.

从非协议,非类型'T'继承

我也尝试了不同场景中的泛型参数继承.将以下方法添加到类中(并删除导致编译错误的init).

func to<OTHER where OTHER: AnyObject, T: OTHER>() {

}
Run Code Online (Sandbox Code Playgroud)

这产生基本相同的输出.

键入'T'约束为非协议类型'OTHER'

我可能工作的任何东西都没有,并以类似的错误消息结束.这是Swift中的错误吗?或者我错过了什么?或者它是Swift的一个功能,并且永远不会像我想的那样工作?

generics ios swift

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

Roboto字体高度不一致

我目前正面临Android的字体Roboto的奇怪问题.起初我在一个水平LinearLayout中有两个TextView,垂直和水平居中.第一个TextView是字体Roboto-Black.ttf,第二个是Roboto-Light.ttf.两者都设置为textSize ="12sp",但是Roboto-Light.ttf的那个只比Roboto-Black.ttf TextView高出一个像素.但是当我设置textSize ="13sp"时没有发生.所以我创建了新的Android项目,只是为了确保它不仅仅在一个应用程序中.结果几乎相同,但在这种情况下,textSize ="12sp"按预期工作,但textSize ="13sp"则不然.我制作了截图以显示问题.

12sp按预期工作.顶边对齐. 图片

13sp有这种奇怪的行为. 图片

奇怪的是,只有当我尝试混合薄而粗的衬里变体时才会发生这种情况.当我做一个的TextView的Roboto-Bold.ttf和第二的Roboto-Black.ttf,效果良好.当我尝试使用Roboto-Light.ttf和Roboto-Thin.ttf时,它也能正常工作.

所以我也尝试在photoshop中测试这个,这就是我发现的:

图片

对于Roboto家族的所有字体都是一样的,除了Roboto-Light.ttf.如果需要,我也可以发布布局的源代码.

提前致谢.

PS:我很抱歉链接,但由于声誉低(全新的帐户)我无法发布图片.同样在最后一个链接中我不得不从"http"中删除"h",因为它不允许我超过两个链接.

android font-size

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

将@objc类捕获为无主时,_swift_abortRetainUnowned

我在捕获一个@objc类的实例时遇到了这种奇怪的崩溃(用swift编写,但带有@objc子类和子类NSObject).它在分配闭包时发生,而不是在被调用时发生,因此问题不在于捕获的值将被释放,然后调用闭包.它随机发生,有时会更快崩溃,有时甚至更晚.我在Swift的早期版本中遇到了这个错误(我认为它是Swift 1.2),但现在我正在使用2.1并且也遇到了这个崩溃.

它运作良好,当我改变[unowned x][weak x],然后用力解包访问它x!.doSomething()这使我相信这是斯威夫特的错误,而不是在我的代码.然而,在bugs.swift.org开票之前,我想更多地关注这一点,以确保我没有遗漏任何东西.

它也在这里提到:
http://www.codeproject.com/Articles/791304/Resolving-strong-references-between-Swift-and-Obje
这里:
https://www.reddit.com/r/swift/comments / 3vhwmj/unowned_bug_in_closure_causes_attempted_to_retain /
and here:https://forums.developer.apple.com/thread/9873

但除了将捕获更改为weak并在以后强行展开之外,没有解决方案.

objective-c ios swift

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

标签 统计

ios ×2

swift ×2

android ×1

font-size ×1

generics ×1

objective-c ×1