草庐IT

Binding_New_Objective-C_Types

全部标签

c++ - 如何在没有 Objective-C 的情况下创建 NSAutoreleasePool?

我有一个用C++编写的多平台游戏。在mac版本中,即使我没有任何obj-c代码,我使用的库之一似乎是自动释放的东西,而且我会因此发生内存泄漏,因为我没有创建NSAutoreleasePool。我想要的是能够在不使用obj-c代码的情况下创建(和销毁)NSAutoreleasePool,因此我不需要创建.m文件,也不需要为此更改我的构建脚本。那可能吗?怎么办?OBS:标记为C和C++,因为任何这些语言的解决方案都可以。 最佳答案 您无法避免实例化Objective-C运行时—但显然您已经拥有了其中之一。如果您想与C的运行时交互,您可以

c++ - 使用 'new' 时未初始化的 std::complex 构造函数

在分析我的程序时,我意识到10%的代码花在了一个愚蠢的std::complex()上。构造函数,使用newstd::complex[size_of_array].我在网上搜索了std::complex的默认构造函数似乎将值double()作为实部和虚部。由于C++不初始化double,我想知道为什么g++费心初始化std::complex零,以及我是否可以通过某种方式在整个程序中解决这个问题(*)(*)现在我必须对创建复数数组的函数进行特殊处理,以分配未初始化的double组并将它们重铸为复数。编辑:如下所示,这是我的疏忽。默认构造函数的实部和虚部构造函数为空(http://en.cp

c++ - VS2015 : Error List doesn't get cleared on new build

一个解决方案中有多个C++项目。让我们编译A,它会失败,并且会在错误列表View中报告错误。现在编译B(假设A依赖于B),这将成功。但是,编译A时出现的错误并没有消失。有人遇到过这样的问题吗?如何启用清除每个构建的错误ListView(多年来它的工作方式)。但是,Output窗口在每次新构建时都是干净的。 最佳答案 您是否在组合框中选择了“仅构建”或“构建+Intellisense”?我的许多此类错误实际上都来自Intellisense(而且往往是伪造的)。 关于c++-VS2015:E

c++ - SSL_CTX_new 返回 NULL 后获取错误描述的问题

我对SSL很陌生,实际上我会说我对此一无所知。我正在使用“SSL_CTX_new”方法创建一个SSL_CTX对象。该方法返回null。文档说我可以检查错误堆栈以找出原因。所以我有函数“intSSL_get_error(SSL*s,intret_code)”(据我所知)我必须使用它来获取错误消息。该方法的文档对函数的第一个参数只字不提。它只是说第二个(“ret”)参数应该等于失败操作的返回码,可以是以下任何一个:SSL_connect()、SSL_accept()、SSL_do_handshake()、SSL_read()、SSL_peek()或SSL_write()所以现在我有两个问题

c++ - Objective-C 中的非规范化 float ?

StackOverflow问题/答案的相关性是什么Whydoeschanging0.1fto0slowdownperformanceby10x?用于Objective-C?如果有任何相关性,这应该如何改变我的编码习惯?有什么方法可以关闭MacOSX上的非规范化float吗?这似乎与iOS完全无关。对吗? 最佳答案 正如我在回复您的评论时所说:itismoreofaCPUthanalanguageissue,soitprobablyhasrelevanceforObjective-Conx86.(iPhone'sARMv7doesn'

c++ - 用于 Objective C 的 IDE

最适合涉及ObjectiveC、C和C++的项目的IDE或开发工具是什么?是否有一个通用的IDE可以支持所有三种语言。 最佳答案 如果您在macOS或iphone应用程序中使用Objective-C,似乎没有办法绕过Xcode来自苹果。Xcode有许多工具,例如Iphone模拟器和适用于Iphone和macOS应用程序的分析器。对于c和c++,我个人会使用Eclipse 关于c++-用于ObjectiveC的IDE,我们在StackOverflow上找到一个类似的问题:

c++ - 通过覆盖 'new' 运算符,您获得了哪些有用的功能?

您发现重写新运算符对哪些新功能(用于调试或非调试)有帮助? 最佳答案 我不得不重载new的主要原因是为了性能。一个例子是分配大量小对象,使用通用分配器通常会相当慢,但使用自定义分配器通常可以很多改进。 关于c++-通过覆盖'new'运算符,您获得了哪些有用的功能?,我们在StackOverflow上找到一个类似的问题: https://stackoverflow.com/questions/1821799/

c++ - 为什么 vector(size) 比 new[] 慢?

我正在对一些STL算法进行基准测试,我对以下代码所花费的时间感到惊讶:(我用time命令测量了g++编译代码[没有优化])#includestructvec2{intx,y;vec2():x(0),y(0){}};intmain(intargc,char*argv[]){constintsize=200000000;std::vectortab(size);//2.26s//vec2*tab=newvec2[size];//1.29s//tab[0].x=0;//delete[]tab;return0;}vector初始化花费的时间是2.26秒,而new(和delete)花费的时间是1

c++ - 当用于 "new"初始化时, () 和 {} 是否总是等价的?

有一个帖子处理parenthesesornotafterthetypename使用新的时候。但是这个呢:如果'Test'是一个普通类,有什么区别:Test*test=newTest();//andTest*test=newTest{};此外,假设Test2有一个Value类型参数的构造函数,它是否总是等同于写:Valuev;Test2*test2=newTest(v);//andTest2*test2=newTest{v}; 最佳答案 在涉及std::initializer_list的上下文中可能存在差异,例如:案例1-()和{}#

c++ - 在哪些情况下需要具体指定模板的参数 `types`?

//Functiondeclaration.templateRTmax(T1a,T2b);//Functioncall.max(4,4.2)//Functioncall.max(4,4.2)一种情况可能是您需要指定返回类型。还有其他情况需要手动指定参数类型吗? 最佳答案 (1)当函数没有参数并且它仍然是模板类型时,您可能必须指定参数明确地templatevoidfoo(){}用法:foo();foo();(2)您想区分值(value)和引用。templatevoidfoo(Tobj){}用法:inti=2;foo(i);//pass