标签: handle

Swift中的运行时错误处理

我完全清楚Swift没有try/catch机制来捕获异常(好的,Swift 2.0现在支持它们).我也理解许多API方法会返回一个NSError,如果出现问题,它将填充错误对象.所以请不要指出这个问题:Swift语言中的错误处理

但是这仍然没有解释如何对自己的代码中的运行时错误作出反应,例如数组越界访问或强制解包一个nil的可选值.例如:

var test: String?
test = nil
println(test!) //oops!
Run Code Online (Sandbox Code Playgroud)

要么

var arr = [0,1,2]
for i = 0...3 {
    println(arr[i]) //oops!
}
Run Code Online (Sandbox Code Playgroud)

每个程序员偶尔会犯这样的错误,应该有一种方法至少记录它们以供以后分析.在调试时,Xcode可以向我们展示这些,但如果最终用户或beta测试人员遇到这种情况怎么办?在纯C中有信号处理,它也可以在Objective-C中使用.在Swift中有这样的东西吗?在应用程序死亡之前输入的集中回调?

更新:

让我重新解释一个问题:在一个大项目中,在每个循环和强制解包时手动检查上述错误是不可行的.当运行时错误最终确实发生时,是否会有一个回调,比如Objective C的segfault处理或NSSetUncaughtExceptionHandler,它会被调用,以便错误可以与崩溃的堆栈跟踪一起记录/通过电子邮件发送?

signals runtime exception handle swift

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

如何从System.Windows.Forms.Form中获取HWND句柄

鉴于形式

System.Windows.Forms::Form Form1;
Run Code Online (Sandbox Code Playgroud)

和窗口句柄

HWND hWnd;
Run Code Online (Sandbox Code Playgroud)

我如何将hWnd设置为Form1的Handle属性,该属性确实作为公共属性存在"获取控件绑定的窗口句柄.(继承自Control.)"根据System.Windows.FormsMicrosoft文档::表格?在Form Form1的构造函数中,我试过了

hWnd = this.Handle;
Run Code Online (Sandbox Code Playgroud)

但编译器抱怨:

错误C2228:'.Handle'的左边必须有class/struct/union类型是'MyNamespace :: Form1 ^ const'你打算用' - >代替吗?

所以我试试

hWnd = this->Handle;
Run Code Online (Sandbox Code Playgroud)

只是

hWnd = Handle; // Since I'm in the Form
Run Code Online (Sandbox Code Playgroud)

然后编译器说:

错误C2440:'=':无法从'System :: IntPtr'转换为'HWND'没有可用于执行此转换的用户定义转换运算符,或者无法调用运算符

handle visual-studio visual-c++ winforms

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

我可以使用SafeHandle而不是IntPtr吗?

我在网上广泛搜索但没有找到一个好的解释.

我的问题非常简单.

我有一个DLL,它有一个名为Initialize的函数,其中一个参数是一个指针,它将接收一个句柄,用于后续调用.另一个参数是一个字符串,我将列出完整性.我正在使用的签名是(简单形式):

[DllImport(MyDll)]
static extern bool Initialize([In] string name, out IntPtr handle);
Run Code Online (Sandbox Code Playgroud)

DLL本身的签名写为:Initialize(LPTSTR name, HANDLE handle)注释"HANDLE:指向将接收句柄的位置".

随后的电话采取的形式

[DllImport(MyDll)]
static extern bool DoSomething(IntPtr handle, uint randomParameter);
Run Code Online (Sandbox Code Playgroud)

我一直在阅读SafeHandle,我想知道我是否可以用它来替代我的IntPtr句柄.如果可以的话,我该怎么做?扩展抽象的SafeHandle类不是问题,但我可以直接用IntPtr替换SafeHandle(并使用默认编组)或者我是否需要做一些额外的事情?

c# pinvoke handle marshalling

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

了解缓存友好,面向数据的对象和句柄

using namespace std;
Run Code Online (Sandbox Code Playgroud)

考虑实体/对象管理的传统OOP方法:

struct Entity { bool alive{true}; }

struct Manager {        
    vector<unique_ptr<Entity>> entities; // Non cache-friendly

    void update() {
        // erase-remove_if idiom: remove all !alive entities
        entities.erase(remove_if(begin(entities), end(entities),
            [](const unique_ptr<Entity>& e){ return !e->alive; }));
    }
};

struct UserObject {
    // Even if Manager::entities contents are re-ordered
    // this reference is still valid (if the entity was not deleted)
    Entity& entity;
};
Run Code Online (Sandbox Code Playgroud)

但是,我想尝试一种面向数据的方法:动态分配Entity实例,而是将它们存储在缓存友好的线性内存中.

struct Manager {
    vector<Entity> entities; // Cache-friendly
    void …
Run Code Online (Sandbox Code Playgroud)

c++ handle data-oriented-design

16
推荐指数
2
解决办法
3415
查看次数

获取应用程序的窗口句柄

我正在构建一个应用程序给另一个应用程序mainWindowhandle它收集有关窗口状态的信息.我收集有关子窗口的信息没有问题,但我无法访问应用程序的其他打开窗口甚至菜单.有没有办法获取应用程序的所有窗口句柄?

.net c# winapi handle

15
推荐指数
2
解决办法
8万
查看次数

如何判断句柄对象在matlab中使用了多少内存

如果我声明一个对象是句柄classdef的子类obj <handle我的对象现在基本上是某个某处内存的"指针".如何找出对象耗尽的内存量?

例如,假设我有一个带字段栏的类foo

classdef foo < handle 
properties
    bar = randn(1000);
end
Run Code Online (Sandbox Code Playgroud)

bar需要8兆字节(8字节*100万个数字)

但如果我输入

obj = foo();
whos('obj');
Run Code Online (Sandbox Code Playgroud)

我明白了

Name      Size            Bytes  Class    Attributes

  obj      1x1                60  foo                
Run Code Online (Sandbox Code Playgroud)

我如何找出obj指向的总内存量?

matlab class object handle matlab-class

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

将UIView添加到UIButton子视图可防止触摸事件

我正在尝试添加一个视图作为按钮的子视图,就像这样(btn1UIButton);

[self.btn1 addSubview:view1];
Run Code Online (Sandbox Code Playgroud)

添加后,按钮不会提供任何与触摸相关的事件,按钮工作正常,不添加此子视图.

有什么想法吗?

iphone handle uibutton touches addsubview

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

不推荐在python中`return None`.如何绕过?

我有一个通过httplib使用连接到URL的功能lxml.它检查xpath某个模式,如果检查结果是肯定的,则返回一个字符串.但如果检查结果为否定,则不返回任何内容.

现在的情况是,我的函数返回None.我调用该函数,检查它的返回值是否为not None并继续在代码中.

一个例子:

def foobar(arg):
    # connect to page by httplib
    # check for arg in a certain pattern by lxml
    if check:
        return result
    else:
        return None

result = foobar(arg)
if result:
    # do stuff
else:
    # do other stuff
Run Code Online (Sandbox Code Playgroud)

最近我读到,这是不行的.我该如何避免这种情况?

python handle return-value

14
推荐指数
1
解决办法
4万
查看次数

返回窗口句柄的名称/标题

我无法解决这个问题.我收到一个错误:

The name 'hWnd' does not exist in the current context
Run Code Online (Sandbox Code Playgroud)

这听起来很容易,可能是...对于提出如此明显的问题感到抱歉.

这是我的代码:

    public static IntPtr WinGetHandle(string wName)
    {
        foreach (Process pList in Process.GetProcesses())
        {
            if (pList.MainWindowTitle.Contains(wName))
            {
                IntPtr hWnd = pList.MainWindowHandle;
            }
        }
        return hWnd;
    }
Run Code Online (Sandbox Code Playgroud)

我尝试了许多不同的方法,每个都失败了.提前致谢.

c# window handle title

13
推荐指数
3
解决办法
4万
查看次数

在Iphone上处理键盘完成按下的事件

当按下文本字段时,我正在移动视图,以便在键盘出现时获得正确的视图.现在,当按下完成键盘按钮时,我想将视图返回到其初始状态.按下完成键盘按钮后如何处理操作?

iphone keyboard key handle

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