小编Gle*_*n T的帖子

如何确保只订阅一次事件

我想确保我只在特定的类中为一个实例上的事件订阅一次.

例如,我希望能够做到以下几点:

if (*not already subscribed*)
{
    member.Event += new MemeberClass.Delegate(handler);
}
Run Code Online (Sandbox Code Playgroud)

我该如何实施这样的警卫?

c# events event-handling subscription

43
推荐指数
4
解决办法
2万
查看次数

NSObject子类的无参数Failable初始值设定项

我想为NSObject子类提供一个可用的初始化程序,用于初始化而不带参数.我的总体目标是返回nil这个类在小于8.0的OS版本上初始化.

我的尝试如下:

class MyObject: NSObject {
    override init?() {
        super.init()
        if floor(NSFoundationVersionNumber) <= NSFoundationVersionNumber_iOS_7_1 {
            return nil
        }

    }
}
Run Code Online (Sandbox Code Playgroud)

但是,此代码会导致以下编译器错误.

Failable initializer 'init()' cannot override a non-failable initializer
Run Code Online (Sandbox Code Playgroud)

是否可以覆盖init()以在子类中提供可用的实现?或者有更好的方法来实现这一目标吗?

ios swift

11
推荐指数
2
解决办法
1102
查看次数

将不可编辑的文本后缀添加到UITextField

我有一个UITextField,我想添加一个"?" 输入的所有文本的后缀.

用户不应该删除此"?" 或在其右侧添加文本.

最好的方法是什么?

iphone objective-c uitextfield ios

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

什么是避免在C++中将unsigned int转换为int的整数溢出的有效方法?

以下是在C++中将unsigned int转换为int的有效且无问题的方法:

#include <limits.h>
void safeConvert(unsigned int passed) 
{
    int variable = static_cast<int>(passed % (INT_MAX+1)); 
    ...
}
Run Code Online (Sandbox Code Playgroud)

或者,还有更好的方法?

UPDATE

正如James McNellis指出的那样,将unsigned int> INT_MAX分配给一个整数并不是未定义的 - 而是实现定义的.因此,此处的上下文现在特别针对我的偏好,即当unsigned int超过INT_MAX时,确保此整数重置为零.

原始背景

我有一些unsigned int用作计数器,但是想要在特定情况下将它们作为整数传递.

在正常操作下,这些计数将保持在INT_MAX的范围内.但是为避免遇到未定义的实现特定行为,如果发生异常(但有效)的情况,我想在这里进行一些有效的转换.

c++ overflow integer-overflow visual-c++

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