Tag: objective c

为什么我可以将int和BOOL转换为void *,但不能浮动?

void*是C和衍生语言的有用特性。 例如,可以使用void*在C ++类中存储objective-C对象指针。 我最近正在研究一个类型转换框架,由于时间限制有点懒 – 所以我使用了void* …这就是这个问题的出现: 为什么我可以将int转换为void *,但不能浮动到void *?

如何在OS X上以Objective C / C获得总CPU空闲时间?

我需要在OS X上获得目标C / C的总CPU空闲时间吗? 如果可能请提供代码示例。 这是我用来获取这些指标的代码。 结果百分比与Activity Monitor中的百分比不同。 所以我假设CPU时间计算不正确: #include #include #include #include #include – (void)printCPUUsage { processor_cpu_load_info_t cpuLoad; mach_msg_type_number_t processorMsgCount; natural_t processorCount; uint64_t totalSystemTime = 0, totalUserTime = 0, totalIdleTime = 0, totalCPUTime = 0; kern_return_t err = host_processor_info(mach_host_self(), PROCESSOR_CPU_LOAD_INFO, &processorCount, (processor_info_array_t *)&cpuLoad, &processorMsgCount); for (natural_t i = 0; i < processorCount; i++) { […]

如何以编程方式访问剪贴板数据?

如何以编程方式访问Mac上的剪贴板数据?

GDB问题:漂亮打印2Darrays?

我有一个2d数组矩阵[10] [10],我想在调试时检查。 我知道我可以在GDB中使用 p *matrix@10 但它在一行中输出,使其难以阅读。 有没有办法让这个输出以任何方式格式化,让我们说作为一个矩阵?

打开多个档案的大中央战略

我有一个使用Grand Central调度队列的工作实现:(1)打开文件并在“queue1”上计算OpenSSL DSA哈希,(2)将哈希写出到新的“side car”文件,以便稍后validation“queue2” 。 我想同时打开多个文件,但是基于一些不会通过打开100个文件并超过硬盘驱动器可持续输出而“阻塞”操作系统的逻辑。 照片浏览应用程序(如iPhoto或Aperture)似乎打开多个文件并显示它们,所以我假设可以这样做。 我假设最大的限制是磁盘I / O,因为应用程序可以(理论上)同时读写多个文件。 有什么建议? TIA

Objective C类方法与C函数

在开发源代码项目时,我遇到了以下C函数声明和实现: // FSNData.h NSString *stringForMimeType(MimeType type); @interface FSNData : NSObject // All the expected objective-c property and instance method declarations @end // FSNData.m #import “FSNData.h” // where ‘type’ is an enum // this does work as expected NSString *stringForMimeType(MimeType type) { switch (type) { case MimeType_image_jpeg: return @”image/jpeg”; case MimeType_image_png: return @”image/png”; default: NSLog(@”ERROR: FSNData: […]

解析iPhone应用程序的RSS / Atom提要的最佳方法是什么?

所以我理解,就解析直接XML而言,有一些选项可用:NSXMLParser,TouchCode的TouchXML等等。这一切都很好,似乎对我来说很好。 这里真正的问题是RSS源(以及Atom源)中存在许多小的变化,因此支持因特网上可用的所有可能的馈送排列变得非常难以管理。 我四处搜索了一个可以处理所有这些低级细节的库,但是没有任何东西。 既然可以链接到Objective-C中的外部C / C ++库,我想知道是否有一个最适合这个任务的库? 有人必须已经创建了这样的东西,很难从Google的数千个结果中找到“正确”的选项。 无论如何,在iPhone应用程序中解析RSS / Atom提要的最佳方法是什么?

了解指针?

正如标题所示,我无法准确理解指针是什么以及它们被使用的原因。 我已经搜索了一下但仍然不太懂。 我主要在Objective-C工作,但从我读过的内容来看,这更像是一个C主题(所以我添加了两个标签)。 根据我的理解,前面带星号的变量指向内存中的地址? 我不太明白为什么你使用指向值的指针而不是仅仅使用值本身。 例如: NSString *stringVar = @”This is a test.”; 在这个字符串上调用方法时,为什么它是指针而不是直接使用字符串? 为什么不使用指向整数和其他基本数据类型的指针? 有点偏离主题,但我是否正确标记了这个? 在我编写它时,我认为它更像是一个编程概念,而不是特定于语言的东西,但它确实专注于Objective-C,所以我用objective-c和c标记它。

NSUInteger vs NSInteger,int vs unsigned,以及类似的情况

任何人都有专业知识来解释何时使用NSUInteger以及何时使用NSInteger? 我已经看到Cocoa方法返回NSInteger,即使在返回值始终是无符号的情况下也是如此。 根本原因是什么? 如果我们想要表示负值,NSInteger或int是否严格限制? 从NSObjCRuntime.h: #if __LP64__ || (TARGET_OS_EMBEDDED && !TARGET_OS_IPHONE) || TARGET_OS_WIN32 || NS_BUILD_32_LIKE_64 typedef long NSInteger; typedef unsigned long NSUInteger; #else typedef int NSInteger; typedef unsigned int NSUInteger; #endif

在Objective-C / C中,你能编写一个结合了2个块的函数吗?

我经常发现自己创建了一个“包装器”块,它只用于执行许多其他块,通常具有相同类型的签名。 假设我有2个具有相同类型签名的块: MyBlockT block1 = ^(NSString *string, id object) { //1 does some work }; MyBlockT block2 = ^(NSString *string, id object) { //2 does some other work }; 有没有办法实现魔术函数Combine() ,它需要2个块: MyBlockT combinedBlock = Combine(block1, block2); //hypothetical function 并等同于: MyBlockT combinedBlock = ^(NSString *string, id object) { block1(string, object); block2(string, object); }; 我知道这只对返回void块有意义,但这就是我感兴趣的全部内容。 Combinefunction只需要2个块,如果我有更多,我可以链接它们。 我对于如何实现这个问题或者是否可能实现这个问题有所了解。 […]