问题标签 [objective-c++]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
2 回答
254 浏览

c++ - 在 c++ 函数中访问目标 c 类的 ivars

我有一个objective-c 类,它有一个字符串ivar,我需要在调用回调函数时更改它。问题是回调在 c++ 中,因此我无法在该 c++ 函数中访问目标 c 类的 ivars。回调必须在 c++ 中,不能更改。我意识到还有其他方法可以做到这一点,即由该函数设置并由我的类读取的全局变量,或者包含函数和字符串并且是我的objective-c类的成员的包装器c++类。但是我觉得简单地在回调中设置 ivar 将是最简单和最干净的方法。任何人都知道做这种事情的方法吗?

0 投票
2 回答
3255 浏览

c++ - 使用 c++ 模板作为目标 c 方法的参数

如何使用 c++ 模板作为目标 c 方法的参数?基本上我想做这样的事情:

但这不起作用。根据文档,这是可能的,但它没有提供任何示例。有谁知道如何做到这一点?

0 投票
3 回答
1869 浏览

iphone - 非 8 字节对齐的内存访问导致带有 iOS 4.0 的 iPhone 3GS 上的内存访问冲突

考虑以下 Objective-C++ iPhone 应用程序 (TestMemAppDelegate.mm)。它在 iPhone 上以 EXC_BAD_ACCESS 崩溃(3GS 与 iOS 4.0)。它在模拟器中运行良好。这显然是一个内存对齐的事情,因为如果“DataA”结构从 8 字节边界开始,它在 iPhone 上可以正常工作。

谁能解释原因?它与ARM架构有关吗?ARM编译器?

0 投票
2 回答
1986 浏览

c++ - 如何解决出现在 Objective-C++ 而不是 Objective-C 中的链接错误?

我正在将我的 App Delegate 文件从 .m 转换为 .mm(Objective-C 到 Objective-C++),以便我可以访问用 Objective-C++ 编写的第三方库。在 Objective-C 中,我的应用程序委托构建并运行良好。但是当我更改扩展名时,项目构建并且我得到链接错误,所有这些都是我使用的用 C 编写的静态库中缺少的符号。这些错误是具有以下格式的经典链接错误:

“MyFunction(arguments)”,引用自:

-MyAppDelegate.o 中的[MyAppDelegate myMethod]

未找到符号

所有问题都在应用程序委托对象中。我知道我已经准备好编译 Objective-C++,因为我的 ViewController 文件是 .mm。所以我的问题有几个部分。

首先,这些符号在我不能使用的意义上真的不存在吗?换句话说,是否不可能从 Objective-C++ 文件中访问普通的旧 C 函数?如果这是真的,那就太不幸了。我认为几乎所有的 Objective-C 代码,当然所有至少构建为 .mm 的 Objective-C 代码都是有效的 Objective-C++。我错了吗?

如果没有,知道如何防止这些错误吗?Objective-C++ 中是否有我不知道的不同标头规则?

感谢您的任何帮助。

0 投票
6 回答
85008 浏览

objective-c - 如何将 std::string 转换为 NSString?

嗨,我正在尝试将标准转换为标准std::stringNSString但运气不佳。

我可以使用以下代码成功地从NSStringa 转换为 astd::string

但是,当我尝试以下操作时出现编译时错误

我得到的错误是

我在这里错过了什么吗?

提前致谢。

0 投票
1 回答
166 浏览

iphone - 在objective-c ++ / iphone sdk中将对象初始化为其子类

我有一堂课,我正在其中初始化我制作的另一个类。我所做的另一个类有一个子类,只做了一些更改(对 init 方法没有)。我想知道的是,如果我尝试这样做可以吗?代码看起来像这样。

在其中一种情况下: self.shapeLayer = [[UMShapeLayer alloc] init]; 在另一种情况下: self.shapeLayer = [[UMShapeLayerOnslaught alloc] init];

如果这会导致问题,并且有另一种方法可以做到这一点,请有人告诉我。

0 投票
1 回答
133 浏览

iphone - 随机代码影响无关代码

我正在使用 cocos2d 和 box2d、桨、球、砖块在 Objective c 中制作 iPhone 游戏,没有什么花哨的东西,桨处理代码非常适合 x 和 y 运动。我在另一个函数中添加了径向重力代码,但这就是它变得奇怪的地方。该代码没有被调用,只是位于一个方法中,它破坏了完全不相关的桨代码。

更奇怪的是,我在另一个类中添加了一个 nslog,它将混乱从不在 x 上移动到不在 y 上移动并开始移动 x。我可以注释掉随机的代码,它开始工作或重新破解。我可以将 box2d 代码移出并移动它,它是否有效。一切都是随机的。

有谁知道这可能是什么原因?Objective-C 中是否有最大方法大小我可能会溢出,这个类中的一个方法非常大?有什么想法吗?

这是一些代码,如果其他代码相同,则框体只是翻转了。还有更多这样的不同物理体相互作用。如果我对其中任何一个都发表评论,它会起作用。不是,也不是

编辑:解决了我逐行遍历所有课程的所有内容。我跑了泄漏,发现2。

但最后,它变成了一个实用函数中的 2 个本地布尔值,我依赖它来自动初始化为 false。就像大多数时候一样,但有时不会。没有特别的原因。月相什么的。

0 投票
2 回答
1088 浏览

c++ - WebView 未在 NSWindow 中显示

我正在开发一个 C++ 应用程序,我需要在其中显示一个带有 WebKit WebView 的 NSWindow。我编写了将管理创建和显示窗口的 Objective-C 类,但其中包含的 WebView 不显示。这是我的代码。关于什么是错的以及如何解决它的任何想法?

我正在用 $g++ -x objective-c++ -framework Cocoa -framework WebKit Foo.m main.m -o test编译下面的代码

Foo.h

Foo.m

主文件

0 投票
2 回答
567 浏览

iphone - ObjC++ 中的私有方法

我需要将 ObjC 类实现文件重命名为 *.mm,因为我使用的是 C++ 框架 (Box2D)。在重命名文件并将文件类型设置为“sourcecode.cpp.objcpp”后,我下面的私有方法声明会产生一些错误,例如:

错误:“私人”之前的预期标识符

方法声明:

如何在 ObjC++ 中使用私有方法的声明?

0 投票
1 回答
545 浏览

c++ - 是否在 Objective-C 综合属性中调用了 C++ 初始化程序?

是否在 Objective-C 综合属性中调用了 C++ 初始化程序?这意味着如果我编写一个自定义初始化程序以从另一个相同类型(C++)的对象创建,合成的属性设置器会调用该初始化程序吗?