Tag: objective c

使用libxml2 sax解析器时如何从xml获取属性的名称和值?

我试图通过使用libxml2来解析iPhone应用程序上的api,试图在一些通用xmls中检测属性的名称和值。 对于我的项目,解析速度非常重要,所以我决定使用libxml2本身而不是使用NSXMLParser。 现在,作为XMLPerformance的参考,它是用于NSXMLParser和libxml2之间的解析基准的iPhone SDK的示例,我试图在XML解析器处理程序中获取属性的细节,如下所示,但我不知道如何检测它。 /* for example, */ static void startElementSAX(void *ctx, const xmlChar *localname, const xmlChar *prefix, const xmlChar *URI, int nb_namespaces, const xmlChar **namespaces, int nb_attributes, int nb_defaulted, const xmlChar **attributes) { if (nb_attributes > 0) { NSMutableDictionary* attributeDict = [NSMutableDictionary dictionaryWithCapacity:(NSUInteger)[NSNumber numberWithInt:nb_attributes]]; for (int i=0; i<nb_attributes; i++) { NSString* key = @""; […]

Objective-c:在方法中访问可变参数

可能重复: 如何在Objective-C中创建变量参数方法 Objective C中可变数量的方法参数 – 需要一个例子 以下是具有可变参数的方法的示例。 – (void)numberOfParameters:group,… { NSLog(@”%@”,group); } 在上面的方法中,我知道访问第一个可变参数。 你能帮助我访问其他人吗? 我正在阅读ObjC.pdf并且我正在阅读第35页,行号是4

iPhone – 获取CGDataProvider背后数据的指针?

我正在尝试获取CGImage并将其数据复制到缓冲区中以供以后处理。 下面的代码是我到目前为止的,但有一件事我不喜欢它 – 它复制图像数据两次。 一次用于CGDataProviderCopyData() ,一次用于:getBytes:length调用imgData。 我还没有找到一种方法将图像数据直接复制到我的缓冲区并删除CGDataProviderCopyData()步骤,但必须有一种方法……任何指针? (… pun ftw) NSData * imgData =(NSData *)(CGDataProviderCopyData(CGImageGetDataProvider(myCGImageRef))); CGImageRelease(myCGImageRef); //我有一个以前定义的指向名为“mybuff”的可用缓冲区的指针 [imgData getBytes:mybuff length:[imgData length]];

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

我正在将我的App Delegate文件从.m转换为.mm(Objective-C到Objective-C ++),以便我可以访问用Objective-C ++编写的第三方库。 在Objective-C中,我的app委托构建并运行良好。 但是当我更改扩展时,项目构建并且我得到链接错误,所有这些都是我用C编写的静态库中缺少的符号。 错误是经典链接错误,格式如下: “MyFunction(arguments)”,引自: – MyAppDelegate.o中的[MyAppDelegate myMethod] 未找到符号 所有问题都在app delegate对象中。 我知道我已经准备好编译Objective-C ++,因为我的ViewController文件是.mm。 所以我的问题有几个部分。 首先,这些符号真的不存在,因为我不能使用它们吗? 换句话说,是否无法从Objective-C ++文件访问普通的旧C函数? 如果这是真的,那很不幸。 我认为几乎所有的Objective-C代码,以及至少构建为.mm的所有Objective-C代码都是有效的Objective-C ++。 我错了吗? 如果没有,任何想法如何防止这些错误? 是否存在Objective-C ++中我不了解的标题规则? 感谢您的帮助。

如何在内存中存储分子?

我想将分子存储在记忆中。 这些可以是简单的分子: Methane (CH4) CH bond-length: 108.7 pm HH angle: 109 degrees 但也有更复杂的分子,如扑热息痛(C8H9NO2): 如何将分子存储在内存中,包括所有键长和角度? 将atom-structs存储在数组中的好主意? 或者,还有更好的方法?

从Swift调用variadic Objective-C函数

我已经总结了问题的步骤,我在Objective-C中定义了一个C函数: ObjC.h #import void cuslog(NSString *format, …); @interface ObjC : NSObject @end ObjC.m #import “ObjC.h” @implementation ObjC @end void cuslog(NSString *format, …) { // Implementation } 我在Bridging-Header.h中公开了它: #import “ObjC.h” // Also tried to put this line in bridging header void cuslog(NSString *format, …); 在Swift中,我打算像这样调用函数: cuslog(“Some log”) 但错误说: “Use of unresolved identifier ‘cuslog'” 在Swift中调用函数的正确方法是什么?

cocoa应用程序中的资源文件夹路径

我正在使用一些c文件的Mac OS X应用程序,我有一个配置文件,我将它添加到应用程序资源。 我的问题是“资源文件夹的相对路径是什么?” 我试过了 “[MyAppName]。应用程序/内容/资源/的config.cfg” 只有当我从xCode运行我的应用程序时才能正常工作,否则它不起作用! 我认为应用程序从“MacOS”文件夹开始,所以我使用了这条路径: “../ Resources / config.cfg” 但它也没有用:( 请帮忙

从dlsym()返回值的函数?

愚蠢的问题,我肯定是一些不正确的语法。 如何让dlsym使用返回值的函数? 我在以下代码中得到错误’void *无效转换为LSError(*)()’ – 尝试编译linux lightscribe示例程序,希望我可以将它与OSX dylib链接(为什么地狱赢了惠普发布了一个真正的Cocoa SDK吗?LS只出现了什么?现在6到7年了?): void* LSHandle = dlopen(“liblightscribe.1.dylib”, RTLD_LOCAL|RTLD_LAZY); if (LSHandle) { LSError (*LS_DiscPrinter_ReleaseExclusiveUse)() = dlsym(LSHandle, “LS_DiscPrinter_ReleaseExclusiveUse”); .. lsError = LS_DiscPrinter_ReleaseExclusiveUse( pDiscPrinter);

另一种速度提升可能吗?

感谢受访者对这个问题的回答( 这个循环很慢,我认为因为我创建了很多中间字符串。我怎样才能加快速度? )我能够将代码加速多个数量级。 我想我可能会做得更好一些。 是否有可能避免在这里创建一堆NSString,而是将大的NSString(routeGeom)拆分成一堆char缓冲区并迭代这些缓冲区? 我从来没有做过任何C编程,所以如果你知道如何完成这项工作,我将不胜感激! NSTimeInterval start = [NSDate timeIntervalSinceReferenceDate]; NSString *routeGeom = [pieces objectAtIndex:1]; NSArray *splitPoints = [routeGeom componentsSeparatedByString:@”],[“]; routePoints = malloc(sizeof(CLLocationCoordinate2D) * ([splitPoints count] + 1)); int i=0; for (NSString* coordStr in splitPoints) { char *buf = [coordStr UTF8String]; sscanf(buf, “%f,%f,”, &routePoints[i].latitude, &routePoints[i].longitude); i++; }

从分数到十进制和后退?

是否有可能在某种变量中存储3/6的分数? 当我尝试这个时它只存储/之前的数字。 我知道我可以使用2个变量并将它们分开,但输入来自单个文本字段。 这是可能吗? 我想这样做,因为我需要计算小数几率的分数。 一个额外的问题;) – 是否有一种简单的方法来计算分数的十进制值? 谢谢..