问题标签 [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++ - 在 Objective C++ 中加载 Nib 并显示窗口
我正在尝试使用 Objective C++ 从 C++ 构造函数加载 Nib。我已经搜索并找到了足够的示例来组合一些代码,但它没有显示窗口。或任何窗户。
下面是一个构造函数的例子:
构造函数的目的是将目录的内容加载到字符串中。我尝试做的是在文件无法打开时显示错误窗口。
ErrorWindow.nib 有一个带有 OK 按钮的窗口和一个NSTextView
用于错误的窗口,我在 nib 中设置了一个NSWindowController
并将其连接到窗口。
我唯一的链接是大多数示例都显示了这一点[errorWindowControl showWindow: self]
;而不是showWindow: nil
因为这是一个 C++ 构造函数,所以我没有它也self
不起作用this
。
如果重要的话,这个构造函数是从 的主要awakeFromNib
方法中调用的。MainMenu.nib
NSObject
谢谢
header - Objective-c++ 符号未发现异常
hej.h
hej.m
主要.mm
这给了我:
“hej()”,引用自:_main in main.o symbol(s) not found
如果我将 main.mm 重命名为 main.m(单个 m),或者将 hej.m 重命名为 mm 或 cpp,那么它可以工作。(尽管这些“解决方案”都不是可取的。假设您想在 objc++ 环境中使用 c-lib - 您不想更改整个 lib,甚至可能无法更改,并且您需要在 objc++ 中使用它。 )
这里到底发生了什么?
c++ - C++ 多重继承和 Objective-C。这是 GCC 中的错误吗?
我昨天遇到了以下奇怪的行为。这对我来说似乎是一个编译器错误,或者我错过了什么?我正在用 Objective-C 到 C++ 适配器类包装 iPhone 的 Objective-C 类的 Facebook Connect,以便可以更方便地从我们自己的 OpenGL/C++ 代码中使用它们。
下面的代码揭示了这个问题。在下面的第一个变体中,编译器编译但弄乱了 vtables,因此调用了错误的方法。在第二个变体中,我们得到一个编译器错误,表明 gcc 被混淆了。
评论试图更详细地解释这种情况。
iPhone SDK 和 Mac 自己的 g++ 以及版本 4.0.1 和 4.2 都会出现问题。有什么我理解不正确或者这是g ++中的错误吗?
更新 我的示例包含指出 Tyler 和 Martin York 的意外错误,但这不是问题所在。下面是一个更新的例子。
更新 2 如果 init: Fooobjc 和 Barobjc 的方法被重命名为 initfoo: 和 initbar: 那么它可以正常工作,但我仍然无法解释代码有什么问题。这可能与 Objective-C 如何创建方法签名有关吗?
c++ - 如何删除“NSBundle 可能无法响应 '-pathForResource:ofType'”警告
我正在尝试将 pathForResource 功能从objective-c 暴露给C++。
但是,我对objective-c 非常陌生,并且无法辨别如何在objective-c 中使用ac 字符串作为参数。显然我在这里有错误的想法。如何让 pathForResource 使用 c 字符串作为参数?
这是我的功能:
objective-c - 在 Objective-C++ Cocoa 中将 RGB 数据转换为位图
我有一个 RGB 无符号字符的缓冲区,我想将其转换为位图文件,有人知道怎么做吗?
我的 RGB 浮点数是以下格式
R [(0,0)], G[(0,0)], B[(0,0)],R [(0,1)], G[(0,1)], B[(0, 1)], R [(0,2)], G[(0,2)], B[(0,2)] .....
每个数据单元的值范围从 0 到 255。有人知道我该如何进行这种转换吗?
cocoa - 如何让 OpenGL 在 Cocoa 中显示 NV12 纹理
我有一个 YUV:420(又名 NV12)帧数据,如何让 OpenGL 识别其用于 glTexImage2D() 渲染的格式。
我意识到我可能必须执行色彩空间转换,但有没有办法告诉 openGl 命令图形硬件执行色彩空间转换?
iphone - 使用 Objective-C++ 的 iPhone 设备/模拟器内存异常
我正在将一个项目移植到 iPhone(来自 Windows Mobile),并使用 Objective-C++ 尽可能多地共享通用 C 和 C++ 代码。但是,在测试过程中,我偶然发现了一个奇怪且麻烦的问题,该问题仅在设备上运行时才会出现。我已将问题代码提炼到一个新项目中,以证明可重复性并允许轻松共享。
其余项目文件以及设置是通过创建新的基于 iPhone Window 的应用程序默认提供的。(我通过删除 .xib 删除了 Interface Builder,从 MemoryTest-Info.plist 中删除了“主 nib 文件基本名称”,并将 @“MemoryTestAppDelegate”指定为 main.mm 中 UIApplicationMain 的第四个参数。)
模拟器按预期运行此示例,但设备出现了我的问题:单步执行 applicationDidFinishLaunching 中的代码,Widget 对象按预期构建。但是,wideHello 和 narrowHello 在 Locals 观察区域中似乎都已损坏。(wideHello 不显示,但显示了正确的字符数,narrowHello 显示为“`K3\x10f\x11”。)检查内存窗口中的两个字符串,可以看到正确的内容 - 超出假定地址 64 个字节wideHello 和narrowHello 的。
如对重载方法 Widget::Go(const wchar_t*) const 的第二次调用所示,wideHello 字符串通过 std::wcout 显示,并且在单步执行 applicationDidFinishLaunching 时正确输出字符串!但是,使用 wcscpy/memcpy 从实际内容前 64 字节的“pre”数据中读取的复制操作会导致我在实际设备上的应用程序出现许多问题。如果我用 Widget* 和动态分配替换在本地堆栈上初始化 Widget,则内存布局符合预期。我尝试了其他变体,但似乎只有堆栈分配的 C++ 对象会导致问题。
任何信息将不胜感激,感谢阅读。
c++ - 通过 performSelector 传递指针或整数类型
我正在将 Objective-C 部分混合到一个 C++ 项目中(请不要为此争论,它是跨平台的)。
我现在想在可可环境中的正确线程(即主线程)上调用一些 C++ 函数或方法。
我目前的方法是将函数指针传递给一个objective-c实例(派生自NSObject
)并在其上执行performSelector
/ performSelectorOnMainThread
。
但是performSelector
s 期望对象作为他们的参数,那么通常如何包装呢?
例子:
...其中 test 被声明为:
必须补充一点,我本周才开始使用objective-c,所以如果有更好的方法,我也很高兴听到它。
另请注意,我无权访问主循环或任何应用程序对象,因为该项目是一个浏览器插件(目前仅针对 Mac 上的 Safari)。
unit-testing - GH-Unit 和 Objective C++
我有一个使用 GHUnit 进行单元测试的 iPhone 项目。最近,我需要实现复数并重载一些运算符以简化 FFT 的计算。这里的目标是创建一种干净的方式来执行 FFT,而不需要像 FFTW 这样的库使用的所有可能功能的开销,从这个意义上说,我可以进一步自定义我想在我的 FFT 中执行的计算数量(所以我降低了分解这个或传统 DFT 中使用的那个的复杂性)。
简而言之,这就是为什么我决定用 C++ 实现我自己的 FFT 库,而不是使用 FFTW。然而,这给 GHUnit 带来了一些问题。我的所有生产目标都与我的 FFT 库的集成正常工作,但 GHUnit 拒绝工作。具体来说,我遇到了 GHComposeString 之类的链接器错误。这只发生在我的单元测试目标中。我想知道这个问题可能是什么?起初,我怀疑这可能是因为 C 与 C++ 在函数名称的错位方式上存在差异,但它似乎不会影响项目的其余部分,只是 GHUnit 部分。
任何将 C++ 与 GHUnit 混合的帮助表示赞赏。
c++ - 适用于 iPhone 的 C 与 C++(Objective-C 与 Objective-C++)
我想为 iPhone 创建一个便携式库,也可以用于其他平台。
我的问题是休耕:
有谁知道在 iPhone 上最好使用什么:Objective-C 或 Objective-C++?它与 C++ 的工作方式是否与使用 C 的 Objective-C 相同?
理由: Objective-C 是 C 的超集,而 Objective-C++ 是 C++is not
的超集。
提前致谢!
更新:在相同的用例实现中,内存使用和速度如何?
UPDATE1:如果有人可以提供更多信息,他将受到欢迎。