问题标签 [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.
c++ - 在 c++ 函数中访问目标 c 类的 ivars
我有一个objective-c 类,它有一个字符串ivar,我需要在调用回调函数时更改它。问题是回调在 c++ 中,因此我无法在该 c++ 函数中访问目标 c 类的 ivars。回调必须在 c++ 中,不能更改。我意识到还有其他方法可以做到这一点,即由该函数设置并由我的类读取的全局变量,或者包含函数和字符串并且是我的objective-c类的成员的包装器c++类。但是我觉得简单地在回调中设置 ivar 将是最简单和最干净的方法。任何人都知道做这种事情的方法吗?
c++ - 使用 c++ 模板作为目标 c 方法的参数
如何使用 c++ 模板作为目标 c 方法的参数?基本上我想做这样的事情:
但这不起作用。根据本文档,这是可能的,但它没有提供任何示例。有谁知道如何做到这一点?
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编译器?
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++ 中是否有我不知道的不同标头规则?
感谢您的任何帮助。
objective-c - 如何将 std::string 转换为 NSString?
嗨,我正在尝试将标准转换为标准std::string
,NSString
但运气不佳。
我可以使用以下代码成功地从NSString
a 转换为 astd::string
但是,当我尝试以下操作时出现编译时错误
我得到的错误是
我在这里错过了什么吗?
提前致谢。
iphone - 在objective-c ++ / iphone sdk中将对象初始化为其子类
我有一堂课,我正在其中初始化我制作的另一个类。我所做的另一个类有一个子类,只做了一些更改(对 init 方法没有)。我想知道的是,如果我尝试这样做可以吗?代码看起来像这样。
在其中一种情况下: self.shapeLayer = [[UMShapeLayer alloc] init]; 在另一种情况下: self.shapeLayer = [[UMShapeLayerOnslaught alloc] init];
如果这会导致问题,并且有另一种方法可以做到这一点,请有人告诉我。
iphone - 随机代码影响无关代码
我正在使用 cocos2d 和 box2d、桨、球、砖块在 Objective c 中制作 iPhone 游戏,没有什么花哨的东西,桨处理代码非常适合 x 和 y 运动。我在另一个函数中添加了径向重力代码,但这就是它变得奇怪的地方。该代码没有被调用,只是位于一个方法中,它破坏了完全不相关的桨代码。
更奇怪的是,我在另一个类中添加了一个 nslog,它将混乱从不在 x 上移动到不在 y 上移动并开始移动 x。我可以注释掉随机的代码,它开始工作或重新破解。我可以将 box2d 代码移出并移动它,它是否有效。一切都是随机的。
有谁知道这可能是什么原因?Objective-C 中是否有最大方法大小我可能会溢出,这个类中的一个方法非常大?有什么想法吗?
这是一些代码,如果其他代码相同,则框体只是翻转了。还有更多这样的不同物理体相互作用。如果我对其中任何一个都发表评论,它会起作用。不是,也不是
编辑:解决了我逐行遍历所有课程的所有内容。我跑了泄漏,发现2。
但最后,它变成了一个实用函数中的 2 个本地布尔值,我依赖它来自动初始化为 false。就像大多数时候一样,但有时不会。没有特别的原因。月相什么的。
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
主文件
iphone - ObjC++ 中的私有方法
我需要将 ObjC 类实现文件重命名为 *.mm,因为我使用的是 C++ 框架 (Box2D)。在重命名文件并将文件类型设置为“sourcecode.cpp.objcpp”后,我下面的私有方法声明会产生一些错误,例如:
错误:“私人”之前的预期标识符
方法声明:
如何在 ObjC++ 中使用私有方法的声明?
c++ - 是否在 Objective-C 综合属性中调用了 C++ 初始化程序?
是否在 Objective-C 综合属性中调用了 C++ 初始化程序?这意味着如果我编写一个自定义初始化程序以从另一个相同类型(C++)的对象创建,合成的属性设置器会调用该初始化程序吗?