标签: dispatch

对于Objective-C ...指向方法的指针

我想设置一个方法调度表,我想知道是否可以创建指向Objective-C中的方法的指针(如指向C中的函数的指针).我尝试使用一些Objective-C运行时函数来动态切换方法,但问题是它会影响所有实例.

由于我是Objective-C的新手,因此非常感谢一个示例.

methods pointers objective-c dispatch

7
推荐指数
2
解决办法
5958
查看次数

c#通用重载方法调度模糊

我刚刚遇到一个方法调度模糊的情况,并想知道是否有人可以解释编译器(.NET 4.0.30319)选择什么重载调用的基础

interface IfaceA
{

}

interface IfaceB<T>
{
    void Add(IfaceA a);
    T Add(T t);
}

class ConcreteA : IfaceA
{

}

class abstract BaseClassB<T> : IfaceB<T>
{
    public virtual T Add(T t) { ... }
    public virtual void Add(IfaceA a) { ... }
}

class ConcreteB : BaseClassB<IfaceA>
{
    // does not override one of the relevant methods
}

void code()  
{
    var concreteB = new ConcreteB();

    // it will call void Add(IfaceA a)
    concreteB.Add(new ConcreteA());
}
Run Code Online (Sandbox Code Playgroud)

在任何情况下,为什么编译器不会警告我,甚至为什么编译?非常感谢您的任何答案.

c# generics methods overloading dispatch

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

调度请求时,if-elif-elif-elif的Python最佳实践

我有5组请求的类别定义为python dicts,例如:

category1 = {'type1', 'type2', 'type3'}
category2 = {'type4', 'type5'}
category3 = {'type6', 'type7', 'type8', 'type9'}
category4 = {'type10', 'type11'}
category5 = {'type12', 'type13', 'type14'}
Run Code Online (Sandbox Code Playgroud)

我需要使用他们的类别来处理请求,例如:

if request_type in category1:
    # process category1 request
    process_category1_request(...)
elif request_type in category2:
    # process category2 request
    process_category2_request(...)
elif...
Run Code Online (Sandbox Code Playgroud)

我需要使用请求类型将请求分派给不同的函数来处理它.

我已经知道有些方法可以在Python中调度这些请求而无需使用if-elif,但我的问题是:在保持代码干净简单的同时,最好的方法是什么?

python if-statement switch-statement dispatch

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

如何在Android Kitkat中以编程方式为webView输入字段提供输入(4.4)

我需要以编程方式为webview输入控件提供输入.为此,我使用的是webView.dispatchKeyEvent(),它在Android 4.3版本之前工作正常,但它不适用于4.4版本(Kitkat - Chromium webView).

我在logcat中看到以下语句:

W/UnimplementedWebViewApi(9737): Unimplemented WebView method onKeyMultiple called from: android.webkit.WebView.onKeyMultiple(WebView.java:2179)
Run Code Online (Sandbox Code Playgroud)

我已经尝试了dispatchKeyEvent(),onKeyDown()但是4.4中的Chromium webView没有任何工作,如果有办法以编程方式向webView字段发送输入,请有人告诉我.

请注意,我正在寻找任何网页的通用解决方案(例如:Facebook URL中的用户名和密码字段),我不知道输入控件的名称/ ID,因此无法使用简单的Javascript方法来加载输入.

android key input webview dispatch

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

如何处理线程和领域?(IOS)

我使用Realm来存储我的模型对象.在我的对象中,我有一个函数,它NSData从自己的属性值生成.这一代可能很长,所以我想NSData在一个带有处理程序块线程中生成我.

我的问题是Realm数据访问只能在Realm创建实体(实际上是主线程)上实现.因此,当我RealmObject在一个线程中访问我的属性时,应用程序崩溃.根据Realm的规格,这是正常的.但是NSData根据Realm限制使我的生成在一个线程中的最佳解决方案是什么?

其实我有两个想法:

  • 创建一个Realm特定的调度队列,并使我的所有Realm访问权限在此队列中写入
  • 在临时结构(或一组变量)中获取所有需要的属性,并使用此结构/变量在线程中生成我NSData的.

我假设很多Realm用户需要处理线程和Realm,所以你在这种情况下做了什么?

multithreading realm dispatch ios swift

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

在Swift 3中永远发送时间

我有一个用Swift 2编写的应用程序.还有这样的一行.

semaphore.wait(timeout: dispatch_time_t(DISPATCH_TIME_FOREVER));
Run Code Online (Sandbox Code Playgroud)

但是这一行在Swift 3中显示为错误.如何将其转换为Swift 3.

请帮我.谢谢

semaphore dispatch ios swift3

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

如何知道标签是否存在?

早上好,我想使用我在页面上找到的写法:https: //developer.android.com/guide/topics/connectivity/nfc/advanced-nfc.html,写一个超轻型mifare.我还没有成功.

 public void writeTag(Tag tag, String tagText) {
   MifareUltralight ultralight = MifareUltralight.get(tag);
   try {
      ultralight.connect();
      ultralight.writePage(4, "abcd".getBytes(Charset.forName("US-ASCII")));
      ultralight.writePage(5, "efgh".getBytes(Charset.forName("US-ASCII")));
      ultralight.writePage(6, "ijkl".getBytes(Charset.forName("US-ASCII")));
      ultralight.writePage(7, "mnop".getBytes(Charset.forName("US-ASCII")));
   } catch (IOException e) {
      Log.e(TAG, "IOException while closing MifareUltralight...", e);
   } finally {
       try {
          ultralight.close();
       } catch (IOException e) {
          Log.e(TAG, "IOException while closing MifareUltralight...", e);
       }
   }
}
Run Code Online (Sandbox Code Playgroud)

我如何从主打电话给它?

我认为有必要插入一个按钮来检查标签是否存在.

我在我的活动(不是主要活动)中添加了"前台调度系统",但是我还是不明白如果标签存在与否,如何显示消息,在使用读写方法之前要检查什么?

package com.example.administrator.myapplication3;

import android.app.PendingIntent;
import android.content.Intent;
import android.content.IntentFilter;
import android.nfc.NfcAdapter;
import android.nfc.Tag;
import android.nfc.tech.MifareUltralight;
import android.nfc.tech.Ndef;
import android.nfc.tech.NfcA;
import …
Run Code Online (Sandbox Code Playgroud)

android foreground nfc dispatch mifare

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

如何在组件中测试react useContext useReducer dispatch

希望有人能指出我正确的方向。基本上我已经创建了一个使用钩子的反应应用程序,特别是 useContext、useEffect 和 useReducer。我的问题是我似乎无法通过测试来检测相关组件的点击或调度事件。

可以在以下位置找到我的应用程序的精简版本:https : //github.com/atlantisstorm/hooks-testing 测试与 layout.test.js 脚本相关。

我尝试了各种方法,模拟分派、useContext 等的不同方法,但对此并不满意。最新版本。

布局.test.js

import React from 'react';
import { render, fireEvent } from "@testing-library/react";
import Layout from './layout';
import App from './app';
import { Provider, initialState } from './context';

const dispatch = jest.fn();

const spy = jest
  .spyOn(React, 'useContext')
  .mockImplementation(() => ({
    state: initialState,
    dispatch: dispatch
}));

describe('Layout component', () => {
  it('starts with a count of 0', () => {
    const { getByTestId } = render(
      <App>
        <Provider> …
Run Code Online (Sandbox Code Playgroud)

dispatch reactjs react-hooks use-effect use-context

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

当 lambda 工作时,为什么重写为 Julia do 块会中断?

我有这个 lambda 风格的函数调用

foldr((l,r) -> r+1, "12345"; init=0)
Run Code Online (Sandbox Code Playgroud)

Julia 很高兴地将其计算为 5。将其重写为do如下所示的样式

foldr("12345"; init=0) do (l,r)   # I also tried ((l,r),) and just tup
    # l,r = tup   # and then destructure here
    r+1
end
Run Code Online (Sandbox Code Playgroud)

据我了解,这两者应该是等价的。不幸的是,Julia 1.7.0-rc3 不同意我的观点:

错误:MethodError:没有方法匹配 (::var"#36#37")(::Char, ::Int64)
最接近的候选者是:(
::var"#36#37")(::Any) at REPL[ 25]:2
Stacktrace:
[1] FlipArgs
@ ./reduce.jl:196 [内联]
[2] BottomRF
@ ./reduce.jl:81 [内联]
[3] _foldl_impl(op::Base.BottomRF{Base. FlipArgs{var"#36#37"}}, init::Int64, itr::Base.Iterators.Reverse{String})
@ Base ./reduce.jl:58
[4] Foldl_impl(op::Base.BottomRF{ Base.FlipArgs{var"#36#37"}}, nt::Int64, itr::Base.Iterators.Reverse{String})
@ Base ./reduce.jl:48
[5] mapfoldr_impl(f::Function, op::Function、nt::Int64、itr::String)
@ Base ./reduce.jl:186 …

lambda types fold dispatch julia

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

如何在 C# 中使用基于运行时动态类型的泛型调度替换枚举上的 switch 语句?

背景

我正在为 Unity 构建一个编辑器扩展(尽管这个问题与 Unity 并不严格相关)。用户可以从下拉列表中选择二元运算,并对输入执行该运算,如图所示:

用户选择的二元运算

该代码取自教程,并在此处结合使用枚举switch语句来实现所需的行为。

下一张图演示了图形 UI 中代码和行为之间的关系:

在此输入图像描述

问题

根据我之前用其他语言编程的经验,以及我希望允许用户可扩展的操作,而不需要用户在核心代码中编辑 switch 语句,我希望生成的代码看起来像这样(无效) C#代码:

... snip ...

        // OperatorSelection.GetSelections() is automagically populated by inheritors of the GenericOperation class
        // So it would represent a collection of types?
        // so the confusion is primarily around what type this should be
        public GenericOperations /* ?? */ MathOperations = GenericOperation.GetOperations();

        // this gets assigned by the editor when the user clicks 
        // the dropdown, but I'm unclear on …
Run Code Online (Sandbox Code Playgroud)

c# generics metaprogramming unity-game-engine dispatch

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