小编Chr*_*ill的帖子

链接器错误从Objective-C++调用C函数

我有一个奇怪的链接器问题.我的代码看起来像这样:

    double given_amount = self.modelController.levelCompleteRewardAmount;
    swrve_currency_given(swrve, (CFStringRef)@"currencyName", given_amount);
Run Code Online (Sandbox Code Playgroud)

我在两个不同的地方有这个代码:在objective-c和objective-c ++文件中.它在objective-C land中编译很好,但是swrve_currency_given()函数在我的WGController.mm文件中导致以下内容:

Undefined symbols for architecture armv7:
  "swrve_currency_given(Swrve*, __CFString const*, double)", referenced from:
      -[WGController giveTheUserSomeCashForPlayingThisLevel] in WGController.o
ld: symbol(s) not found for architecture armv7
collect2: ld returned 1 exit status
Run Code Online (Sandbox Code Playgroud)

我不完全确定这个错误是否与Obj-C与C++有关,但感觉就像它.我的理论是它可能认为它是Obj-C类的一个函数?'swrve'代码是第三方代码,一个.h和.c文件,我像这样导入:

#import "swrve.h"

任何帮助表示赞赏!谢谢

objective-c objective-c++

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

如何在XCode模板中包含静态库依赖项?

我可以在TemplateInfo.plist文件中包含这样的框架:

<key>Frameworks</key>
            <array>
                <string>QuartzCore</string>
                <string>OpenGLES</string>
                <string>OpenAL</string>
                <string>AudioToolbox</string>
                <string>AVFoundation</string>
                <string>UIKit</string>
                <string>Foundation</string>
                <string>CoreGraphics</string>
            </array>
Run Code Online (Sandbox Code Playgroud)

但我找不到如何使用静态库做类似的事情.这将大大改善我的模板.有这样的功能吗?

iphone xcode objective-c ios xcode-template

12
推荐指数
1
解决办法
1943
查看次数

从Interface Builder连接NSMenuItems的最佳方法?

所以我花了一些时间检查CocoaDev,阅读NSMenuItems上的Cocoa文档,并在Interface Builder中进行一些测试.

在我的应用程序中,我有一个在Interface Builder中设计的应用程序菜单([NSApp mainMenu]).我看到三条潜在的路径:

  1. 将我的操作响应程序放在NSApplicationDelegate中.这对我来说似乎很奇怪,部分原因是因为它远远超过了食物链,部分原因是因为它看起来像是狂奔.

  2. 创建一个可以侦听各种NSMenuItem操作消息的子视图.这似乎很有用,但看起来为了让它在响应链中可能会有一些我无法弄清楚的魔法.

  3. 创建一个NSObject,它监听特定的应用程序菜单内容,将其放入xib中,然后将其连接起来.在我看来,这似乎是目前最好的解决方案,因为我可以隔离东西,而不依赖于响应者链来达到特定对象.但我想知道,当我的应用程序达到足够复杂程度时,这可能是一个问题,因为它篡夺了响应者链,这可能是一个超出易用性的原因.

很抱歉这个问题很长.有首选方法吗?谢谢!

objective-c first-responder nsmenuitem

7
推荐指数
1
解决办法
1307
查看次数

在Objective-C中退出并处理致命错误的最佳方法是什么?

假设我的应用程序做了一些无法恢复的事情(这种情况从未发生过,对吧?:P).我应该使用exit()吗?我应该使用NSAssert(false,@"Foo")吗?我应该以某种方式扔东西吗?谷歌的硬答案.

objective-c

5
推荐指数
1
解决办法
1980
查看次数

在AOT代码中使用IList <T> .someMethod等接口真的是一个限制吗?

在单声道项目文档中,概述了此限制:

限制:通用接口实例化

FullAOT模式不支持以下类型的接口调度:

interface IFoo<T> {
...
    void SomeMethod ();
}
Run Code Online (Sandbox Code Playgroud)

由于Mono无法从静态分析中确定哪种方法将实现IFoo.SomeMethod,因此不支持此特定模式.

我们一直在使用此类限制之类的代码,并且目前正试图弄清楚某些稳定性问题是否与此相关.这似乎按预期运作,因此我们怀疑这是一个问题.我们的代码编译成AOT没有错误,并且运行时不会抛出任何错误.这只是旧文件吗?

另外一个好处的问题:如果这是不应该工作...为什么没有它内置的C#类如IList的没有问题的工作,但它不应该工作,否则?

mono aot

5
推荐指数
0
解决办法
457
查看次数

存储对Dictionary中Class的引用,然后再实例化类?

我想将一个Class对象存储在NSMutableDictionary中,然后根据该键(特别是NSNotification名称)实例化一个副本.但不幸的是,我无法找到Objective-C中"Class"类型的对象,而且很难google.它绝对不是'id'类型所以它通常不会进入字典:

 warning: Semantic Issue: Incompatible pointer types sending 'Class *' to parameter of type 'id'
Run Code Online (Sandbox Code Playgroud)

或者,我可以将Class的名称存储在字典中,并使用NSClassFromString来实例化该类.使用NSStringFromClass将Class放入Dictionary中,然后再使用NSClassFromString来获取类似乎很愚蠢.这是我最好的选择吗?

objective-c

2
推荐指数
1
解决办法
2039
查看次数