小编Bar*_*orn的帖子

为什么实现具有类型约束的通用接口的泛型类需要重复这些约束?

假设我有一个以下的C#界面:

public interface IInterface<T> where T : SomeClass
{
    void InterfaceMethod();
}
Run Code Online (Sandbox Code Playgroud)

而SomeClass的定义如下:

public class SomeClass
{
    public void SomeMethod();
}
Run Code Online (Sandbox Code Playgroud)

现在我想定义接口的实现,它不会编译:

public class InterfaceImpl<T> : IInterface<T> 
{
    public void InterfaceMethod()
    {
        T test = default(T);
        test.SomeMethod(); //Gives Error
    }
}
Run Code Online (Sandbox Code Playgroud)

在我改为之前:

public class InterfaceImpl<T> : IInterface<T> where T : SomeClass
{
    public void InterfaceMethod()
    {
        T test = default(T);
        test.SomeMethod(); //Compiles fine
    }
}
Run Code Online (Sandbox Code Playgroud)

类型约束是否也从接口"继承"(不是正确的词,我知道)是否有意义?

.net c# generics inheritance interface

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

在'applicationDidBecomeActive'之后调用什么方法?

这是我在这里的第一个问题,因为我在开发我的第一个iOS应用时遇到了问题.它是成千上万的手电筒应用程序之一,但我正在努力为它添加尽可能多的功能.其中一个是在应用程序进入后台或终止时保存应用程序的状态.转到前台(iOS 4或更高版本)或重新启动后,我正在从文件加载设置并重新应用它们.其中一个设置显然是AVCaptureDevice.torchMode.但是,我遇到了这个问题.我正在该applicationDidBecomeActive方法中重新应用这些设置.这一切似乎都有效,但是当我快速点击主页按钮然后重新启动应用程序时,应用程序将执行以下操作(我将applicationDidBecomeActive方法延迟观察它):

1.显示黑屏(加载)
2.执行applicationDidBecomeActive并打开LED(我把延迟放在这里)
3.显示我的当前UIViewController和同时关闭LED

只有在它被发送后立即从后台调用应用程序后才会发生.我知道这不是现实的用例场景,但我喜欢认为错误常常"堆积",并且由于这种(可能)糟糕的设计,我将来可能会遇到其他问题.我绝对相信这不是我的代码关闭LED,因为NSLog每当我的代码修改AVCaptureDevice.torchMode属性.所以,确切地说,我的问题是:
什么方法被调用applicationDidBecomeActive,可能与之相关,可能UIViewController会关闭我的火炬?是否有任何可能的解决方案或解决方案?

objective-c multitasking ios4 ios flashlight

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