相关疑难解决方法(0)

iOS - 在不冻结UI的情况下处理数据

我需要做以下任务:

1)从sqlite数据库中读取一些数据

2)处理数据

3)用处理过的数据生成一些图表

如果我有一个用户在应用程序中输入了许多数据,那么有一天这个分析可能会变慢并冻结UI.

那么,处理它的正确方法是什么,允许用户与UI交互,可以选择取消操作还是退出屏幕?

我需要为我的所有任务创建简单的线程,并使用取消事件或标志来停止每个任务?或者还有另一种方法吗?

例如:

任务1:在带有标志的线程中从sqlite读取数据,以便在需要时停止进程.

任务2:使用标志处理带有标志的线程中的数据,以便在需要时停止进程.

任务3:将数据传递给第三方组件.此时,它可以取消正在其他组件上运行的操作吗?

我是在思考正确的方法,还是可以改进某些方面?

user-interface multithreading objective-c freeze ios

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

有没有办法声明一个函数参数来接受一个匿名枚举?

如果我有一个匿名枚举,是否有任何方法可以将该类型的值传递给函数?例如,

typedef struct {
    enum { On, Off } status;
    int max_amps;
} SWITCH;

void make_switches(){
    SWITCH switch1 = createSwitch( On, 15 );
    SWITCH switch2 = createSwitch( Off, 20 );
}

SWITCH* createSwitch( ??? status, int max_amps ){
    SWITCH* new_switch = malloc( sizeof( SWITCH ) );
    new_switch->status = status;
    new_switch->max_amps = max_amps;
    return new_switch;
}
Run Code Online (Sandbox Code Playgroud)

我想将匿名枚举的值传递给createSwitch()函数。有什么办法吗?

c enums

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

C指向匿名结构的指针

有没有办法获得指向匿名结构的指针?有了匿名结构,我可以写下面的内容:

struct a{
    int z;
};
struct b{
    int y;
    struct a *x;
}
Run Code Online (Sandbox Code Playgroud)

这工作正常,但我只struct a在内部使用,struct b并且用它来污染全局命名空间似乎是多余的.有没有办法可以x为匿名结构定义指针().可能如下所示的东西:

struct b{
    int y;
    struct {
        int z;
    } *x;
}
Run Code Online (Sandbox Code Playgroud)

或者这本身有效吗?

c

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

如何在 clang 编译器中使用 typeof 而不发出警告?

我想在 clang 中使用 typeof 但不是__typeof__。如果我使用 typeof 而不声明它,我会收到以下警告

vector.c:14:5: warning: extension used [-Wlanguage-extension-token]
    vec_init(&a,5);
    ^
./vector.h:27:26: note: expanded from macro 'vec_init'
    ((vec_ptr)->data) = (typeof((vec_ptr)->data)) malloc((capacity) * (sizeof((*((vec_ptr)->data)))))      \
                         ^
1 warning generated.
Run Code Online (Sandbox Code Playgroud)

然后我认为定义它可能会解决这个问题,所以我添加了以下代码:

#ifndef typeof
#ifdef __clang__
#define typeof(x) __typeof__(x)
#endif
#endif
Run Code Online (Sandbox Code Playgroud)

添加预处理器定义后,出现以下错误:

In file included from vector.c:1:
./vector.h:5:9: warning: keyword is hidden by macro definition [-Wkeyword-macro]
#define typeof(x) __typeof__(x)
        ^
1 warning generated.
Run Code Online (Sandbox Code Playgroud)

但如果我使用__typeof__它,则不会出现错误。如何解决 clang 上的这个警告问题?

c clang

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

c ++按类型而不是类型声明变量

有没有办法通过指定类型大小而不是大小本身来定义C++中的变量?或者有没有办法从函数返回一个类型

template<typename T, int L>
class vector {
    public:
    T* __vector;
};

#ifdef USE_FLOAT
typedef vector<float, 3> vec3
#else
typedef vector<double, 3> vec3;
#endif

void myFunc(vec3) {
    float a = vec3.__vector[0];
    // AAHHH but what if vec3 is a vector of doubles?
    // I can get the size of the type by
    int s = sizeof(vec3[0]);
    // So can I declare a variable by just giving the size of the variable?
}
Run Code Online (Sandbox Code Playgroud)

或者,无论如何在类中都有一个可以返回模板类型名称的访问器函数?

任何的意见都将会有帮助.我知道还有其他方法可以解决这个问题,但我特别想知道这两件事中是否有可能.(我对第二种方法的希望不大.)

我认为第一种方法是可以通过使用void指针和malloc'ing ...但我宁愿避免使用堆,只要坚持堆栈,如果可能的话.

编辑:

只是为了澄清,我不认为 …

c++

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

标签 统计

c ×3

c++ ×1

clang ×1

enums ×1

freeze ×1

ios ×1

multithreading ×1

objective-c ×1

user-interface ×1