小编the*_*ine的帖子

"这个UIView似乎是NSISVariable的委托,它不知道任何事情.这是一个内部UIKit错误"错误

我正在研究一个opengl项目.我使用了一些图像(2个用于xy刻度)和标签(8个)在屏幕上显示刻度.我的第一个观点是tableview我去的地方openglView.但每当我回去从openglViewtableView它给我这个错误和应用程序崩溃.

"这个UIView似乎是NSISVariable的代表,它对此一无所知.这是一个内部的UIKit错误."

有什么建议?这是因为我包含了太多的UI元素,除了那些图像和标签我也使用了一些按钮.而且我也适用affineTransform于那些图像和标签以及一个按钮.

确切的错误是:

2013-01-31 12:20:18.743 EMtouch[50496:12203] *** Terminating app due to uncaught exception 'NSInternalInconsistencyException', reason: '{ Rows:
    UILayoutContainerView:0x9835660.Height == 480 + 1*0x7e53030.marker + 1*0x7e546c0.marker
    UILayoutContainerView:0x9835660.Width == 320 + 1*0x7e52f90.marker + 1*0x7e54330.marker
    UILayoutContainerView:0x9835660.minX == 0 + 1*0x7e52ca0.marker + -0.5*0x7e52f90.marker
    UILayoutContainerView:0x9835660.minY == 0 + 1*0x7e52fd0.marker + -0.5*0x7e53030.marker
    UINavigationTransitionView:0x9837ea0.Height == 480 + 1*0x7e51bf0.marker + 1*0x7e53030.marker + 1*0x7e546c0.marker
    UINavigationTransitionView:0x9837ea0.Width == 320 + 1*0x7e519c0.marker + 1*0x7e52f90.marker + 1*0x7e54330.marker
    UINavigationTransitionView:0x9837ea0.minX == 0 + 1*0x7e51940.marker + …
Run Code Online (Sandbox Code Playgroud)

opengl-es uikit uiview ios

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

常用的详细命名空间是什么

在一些较大的项目或库(例如Eigen)中,您可以看到名称空间,如internaldetail.我明白什么是internal好处,但detail常用的是什么?有没有将代码分发到这样的命名空间的常见约定(特别是在具有公共接口的库的情况下)?

c++ namespaces

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

VAO和元素数组缓冲区状态

我最近写一些的OpenGL 3.3代码与顶点数组对象(VAO)并测试它以后英特尔图形适配器,我发现,我感到失望,该元件阵列缓冲器结合显然不是VAO状态的一部分,作为呼叫:

glBindVertexArray(my_vao);
glDrawElements(GL_TRIANGLE_STRIP, count, GL_UNSIGNED_INTEGER, 0);
Run Code Online (Sandbox Code Playgroud)

没有效果,而:

glBindVertexArray(my_vao);
glBindBuffer(GL_ELEMENT_ARRAY_BUFFER, my_index_buffer); // ?
glDrawElements(GL_TRIANGLE_STRIP, count, GL_UNSIGNED_INTEGER, 0);
Run Code Online (Sandbox Code Playgroud)

渲染几何体.我认为这是在英特尔执行的OpenGL(因为它是在GL_ARB_vertex_array_object即使在GL_OES_vertex_array_object明确提出(和)该元素阵列的一个单纯的错误保存状态的一部分),但随后在移动的NVIDIA Quadro 4200发生这不好玩.

它是我的代码中的驱动程序错误,规格错误或错误吗?代码在GeForce 260和480上完美运行.

有没有类似的经历?

什么也奇怪的是,GL_EXT_direct_state_access不具有结合元件阵列缓冲器到VAO的函数(但是它确实有功能来指定顶点ATTRIB阵列,因此阵列缓冲器).GPU制造商是否违反规范并欺骗我们,或者是什么?

编辑:

我原本不打算显示任何源代码,因为我认为这里没有必要.但是根据要求,这是重现问题的最小测试用例:

static GLuint n_vertex_buffer_object, p_index_buffer_object_list[3];
static GLuint p_vao[2];

bool InitGLObjects()
{
    const float p_quad_verts_colors[] = {
        1, 0, 0, -1, 1, 0,
        1, 0, 0, 1, 1, 0,
        1, 0, 0, 1, -1, 0,
        1, 0, 0, -1, -1, 0, // red quad
        0, 0, 1, -1, 1, 0,
        0, 0, 1, …
Run Code Online (Sandbox Code Playgroud)

opengl nvidia intel vertex-array opengl-3

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

詹金斯的自定义工作区

  1. 在配置作业时,我没有在Jenkins(版本1.465)中选中自定义工作区的复选框,是否有任何插件可以获取它?

  2. 获取复选框后如何配置(工作区路径)?

jenkins jenkins-plugins

21
推荐指数
3
解决办法
7万
查看次数

二进制搜索提示

我有一个简单的std::vector包含一些数字,这些数字是按升序排序的.我想查找一个元素,到目前为止我使用:

return std::lower_bound(vec.begin(), vec.end(), needle);
Run Code Online (Sandbox Code Playgroud)

needle我寻找的元素在哪里.然而,我的向量往往很长(数百万个元素),但大多数时候内容是相对可预测的,如果第一个元素是零而最后一个元素是N,那么其间的元素值接近于(N * index) / vec.size()因此是可预测的.

是否有下限的修改,它会接受提示(类似于如何std::map::emplace_hint()),例如:

assert(!vec.empty());
std::vector<int>::iterator hint = vec.begin() + std::min(vec.size() - 1,
    (needle * vec.size()) / vec.back());
if(*hint > needle)
    return std::lower_bound(vec.begin(), hint, needle);
else
    return std::lower_bound(hint, vec.end(), needle);
Run Code Online (Sandbox Code Playgroud)

这将起作用,但是lower_bound忽略它接近解决方案并且很可能开始将间隔分成两半(看看我们知道针最有可能不在哪里),采取不必要的许多步骤.我知道有一个算法从步骤1开始,它加倍,直到它超过针,然后在给定的间隔内进行二元搜索.

我忘了算法的名称是什么.它是在STL中实现的吗?

c++ algorithm search

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

OpenMp编码:警告:忽略#pragma omp parallel

我在使用Linux上的OpenMP指令编译C代码时收到此警告:

warning: ignoring #pragma omp parallel
Run Code Online (Sandbox Code Playgroud)

Gcc版本是4.4.

这只是一个我不应该关心的警告吗?执行是否会并行?我想要一个有一些解释的解决方案.

我已经提供-fopenmpmake命令,但是gcc不接受,否则对于单个文件编译,即gcc -fopenmp工作正常.

warnings openmp

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

静态成员函数中封闭类的C++类型

我认为这是完全不可能的,但如果.在任何版本的C++中,是否有可能以某种方式在静态成员函数中获取封闭类的类型?

class Impossible {
public:
    static void Fun()
    {
        typedef Impossible EnclosingClass;

        // now do something with EnclosingClass ...
    }
}
Run Code Online (Sandbox Code Playgroud)

有没有办法获得封闭类的类型(Impossible在这种情况下)而不在函数中写入类的名称?

我之所以这样做,是为了避免在函数中重复类名.如果发生这样的事情,很容易导致难以找到的复制粘贴错误:

class SomeOther { // another class, with the same interface as Impossible
public:
    static void Fun()
    {
        typedef Impossible EnclosingClass;
        // whoops, copy-pasted, forgot to change "Impossible" to "SomeOther"

        // now do something with EnclosingClass ...
    }
}
Run Code Online (Sandbox Code Playgroud)

有没有一种好方法可以防止这种事情发生?我可以想象触摸在封闭类中声明为私有的东西,但这会强迫我编写额外的代码(因为我当前的设计不包含任何固有的私有成员,都是公共的).

c++ static-methods types

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

在app中的App Purchase Receipt验证中

我想在我的应用中验证交易收据,

这是我的代码,

- (void)recordTransaction:(SKPaymentTransaction *)transaction {

    NSData *receiptData = [NSData dataWithData:transaction.transactionReceipt];

    NSString *encodedString = [Base64 encode:receiptData];

     NSURL *url = [NSURL URLWithString:@"https://sandbox.itunes.apple.com/verifyReceipt"];

    ASIFormDataRequest *request = [[ASIFormDataRequest alloc] initWithURL:url];

    [request setPostValue:encodedString forKey:@"receipt-data"];

    [request setRequestMethod:@"POST"];

    [request setDelegate:self];

    [request startAsynchronous];

}
Run Code Online (Sandbox Code Playgroud)

我得到输出:

{"status":21002,"exception":"java.lang.NullPointerException"}

有人可以帮我收到正确的收据验证吗?

in-app-purchase ios

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

如何异步刷新内存映射文件?

我使用内存映射文件对Windows 7 64位下的大量图像文件(~10000 x 16 MB)进行读/写访问.我的目标是:

  1. 尽可能多地缓存数据.

  2. 能够分配新图像并尽快写入.

因此我使用内存映射文件来访问文件.缓存效果很好,但操作系统不会刷新脏页,直到我几乎没有物理内存.因为一旦物理内存被填满,分配和写入新文件就会很慢.

一种解决方案是定期使用FlushViewOfFiles(),但在数据写入磁盘之前,此函数不会返回.

有没有办法异步刷新文件映射?我发现的唯一的解决办法是Unmap()MapViewOfFile()再次,但使用这种方法,我不能肯定再次获得相同的数据指针.有人可以提出更好的方法吗?

编辑:阅读WINAPI文档一段时间,似乎我找到了适合我的问题的解决方案:

调用VirtualUnlock()未锁定的内存范围会导致刷新脏页.

c++ memory-mapped-files

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

避免虚函数的标准方法

我有一个库,里面有很多小对象,现在都有虚函数.它达到了这样的程度,即指向虚函数表的指针的大小可能超过对象中有用数据的大小(它通常只是一个单独的结构float).对象是稀疏图上的数值模拟中的元素,因此不能轻易合并等.

我并不关心虚拟函数调用的成本,而是关心存储成本.发生的事情是指向虚函数表的指针基本上降低了缓存的效率.我想知道我是否会更好地将类型id存储为整数,而不是虚函数.

我不能使用静态多态,因为我的所有对象都在一个列表中,我需要能够对由索引选择的项执行操作(这是一个运行时值 - 因此无法静态地确定类型).

问题是:是否有设计模式或通用算法,可以从接口动态调用函数,给定类型列表(例如在类型列表中)和类型索引?

接口是定义的并且没有太大变化,但是将来会由(可能技能较低的)库用户声明新对象,并且这样做不需要很大的努力.表现至关重要.可悲的是,没有C++ 11.

到目前为止,我可能有一个愚蠢的概念证明:

typedef MakeTypelist(ClassA, ClassB, ClassC) TList; // list of types

enum {
    num_types = 3 // number of items in TList
};

std::vector<CommonBase*> uniform_list; // pointers to the objects
std::vector<int> type_id_list; // contains type ids in range [0, num_types)

template <class Op, class L>
class Resolver { // helper class to make a list of functions
    typedef typename L::Head T;

    // specialized call to …
Run Code Online (Sandbox Code Playgroud)

c++ design-patterns virtual-functions typelist

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