Tag: objective c

如何分类转储iPad应用程序?

我正在尝试运行class-dump一个iPad应用程序来探索它的架构。 我使用Unarchiver提取了.ipa文件,在Payload文件夹中,我在.app文件上运行了class-dump。 但是,我收到此错误: /* * Generated by class-dump 3.3.3 (64 bit). * * class-dump is Copyright (C) 1997-1998, 2000-2001, 2004-2010 by Steve Nygard. */ #pragma mark – /* * File: /Users/jason/Desktop/foo/Foo.app/Foo * UUID: 1234567890 * Arch: arm v7 (armv7) * * Objective-C Garbage Collection: Unsupported * This file is encrypted: * cryptid: 0x00000001, cryptoff: 0x00001000, […]

Objective-C变量……指向自己?

我在Apple的一些示例代码中发现了这个构造,用于处理键值观察。 添加观察者时,可以添加唯一标识KVO调用的上下文(以void *变量的forms) – 如果您希望多个KVO调用触发相同的操作,则特别有用,因为单个上下文可以避免使用一堆链式或语句来检查所有可能性。 这是用于声明用于上下文的变量的行: static void *aContext = &aContext; 它基本上声明了一个引用自身的aContext,为自己分配了自己的内存位置 – 这是一个为KVO上下文创建唯一标识符的绝妙技巧。 除了细节之外,我很好奇这究竟叫做什么(自我指定?圆形指针?还有什么?)以及它除了KVO之外还有什么用处。 我尝试使用谷歌搜索不同的东西,但我无法想出任何完全相同的东西,缺乏适当的术语。 🙂 我肯定会经常使用这个技巧,因为它减少了KVO处理所需的if语句数量,这使它更加优雅。

为什么sysctl在Mac OS X上生成E_INVAL?

下面是一个C / Obj-C代码的简化(错误/空检查省略)片段,它使用sysctl来获取PID 50的特定进程的argv。 … int getProcessArgs[3] = { CTL_KERN, KERN_PROCARGS, 50 }; sysctl(getProcessArgs, 3, NULL, &length, NULL, 0); char* processArgs = malloc(length * sizeof(char)); sysctl(getProcessArgs, 3, processArgs, &length, NULL, 0); … 第一次调用sysctl(确定argv字符串数组的大小)成功。 返回的长度约为1600,比我预期的要大,但我认为并非不合理。 Malloc成功了。 第二次调用sysctl返回-1,将errno设置为22,E_INVAL。 我已经查看了其他代码,包括来自这个问题的代码,但是看不到我的问题。 我错过了什么?

使用“光栅模式”直接打印到以太网打印机:需要基本指导

我偶然发现了一个超出我的专业领域的问题,而且我没有导师可以求助于此。 我有一个收据打印机,我需要通过iOS应用程序进行交互。 打印机与设备位于同一网络上,因此我可以通过支持的“线路模式命令”来解决它 我想做的是保持我已经跨平台工作的代码 – 即它是一个UIView / NSView,如果你不熟悉OS X / iOS,它只是一个标准的vanilla视图,我可以渲染成PDF / PNG格式。 值得庆幸的是,打印机具有“光栅图形”模式,这似乎是我需要的。 不幸的是,无论是命令规范的破坏英语,还是我对基本C以外的任何东西的完全缺乏了解,或者我完全缺乏关于图形的知识,我都不知道如何从我拥有的命令规范开始。 我知道打印机和我的网络工作,因为我可以通过网络解决它并发送基本的feed命令。 但是,我不知道如何从PNG开始 – >无论打印机需要什么使它成为’光栅模式’的工作。 该规范可在http://www.star-m.jp/eng/service/usermanual/linemode_cm_en.pdf上找到 ,如果你想提供帮助,你想要开始阅读它的页面是3-68,具体命令即使开始使用也遇到麻烦的是3-78 / 3-79。 我只能给你一个勾选标记,但我向你保证,如果你能为我提供正确方向的一点,你将会感激不尽。

如何使用变量为NSString分配nsstring对象?

我有以下代码: long mins = 02; long secs = 35; NSString *allTime = [[NSString alloc]init]; allTime = @”%i:%i”,mins, secs ; 但它不起作用,因为当我尝试显示那个nsstring对象时,我得到了这个:%i:%i而不是我想得到的:02:35 怎么做 ? 谢谢! allTime = [NSString stringWithFormat:@”%l/%l”, mins, secs]; for(Playlists *thePL in collection) { NSLog(@”===NEXT PLAYLIST===”); NSLog(@”Name: %@”, thePL.namePL); NSLog(@”Quantity of songs: %i”, thePL.entries); NSLog(@”Total of time: %@”,thePL.allTime); } 总时间:l

CFP参考/ Library / Preferences

我在系统偏好设置(使用授权锁定)中使用了prefpane。 我需要将我的首选项写入/Library/Preferences 。 但是,每当我尝试将prefs同步到kCFPreferencesAnyUser和kCFPreferencesCurrentHost时,即使我的锁已解锁,它也会失败。 有没有办法在不创建帮助应用程序的情况下将我的首选项写入/Library/Preferences ? 我想避免这种情况,因为它是多余的。 请注意,要修改“任何用户”首选项,需要root权限(或Mac OS X v10.6之前的管理员权限) – 请参阅“ 授权服务编程指南”。 我阅读了授权服务编程指南,它甚至没有提到偏好。

如何按位和CFBitVector

我有两个CFMutableBitVector实例,如下所示: CFBitVectorRef ref1, ref2; 我怎样才能对这些家伙进行逐步操作? 就目前而言,我只关心and ,但显然xor , or等等对我们来说很有用。 显然我可以遍历向量中的位,但是当我在位级别工作时,这似乎很愚蠢。 我觉得我只缺少一些Core Foundationfunction,但我找不到它们。 谢谢, 库尔特

我是否正确创建并将此C数组传递给Objective-C方法并使用属性引用它?

我创建了一个像这样的C数组: unsigned char colorComps[] = {2, 3, 22, 55, 9, 1}; 我想传递给Objective-C对象的初始化器。 所以我想我必须将数组放在堆上: size_t arrayByteSize = numColorCompVals * sizeof(unsigned char); unsigned char *colorCompsHeap = (unsigned char*)malloc(arrayByteSize); 然后我必须在for循环中将我的第一个“堆栈内存数组”写入堆数组: for (int i = 0; i < numColorCompVals; i++) { colorCompsHeap[i] = colorComps[i]; } 附带问题:是否有更优雅的解决方案来避免循环步骤? 然后我将它传递给方法: 定义为 – (id)initWithColorCompsC:(unsigned char *)colorCompsHeap; TheObject *obj = [[TheObject alloc] initWithColorCompsC:colorCompsHeap]; TheObject具有保存C数组的属性: […]

模拟器/生成的开关语句范围,单位为c

在ac(99?)或Objective C switch语句中是否存在支持范围情况的hack? 我知道不支持写这样的东西: switch(x) case 1: case 2..10: case 11: 但我认为应该有一种使用#define宏生成代码的方法。 当然我可以用一个案例列表来定义一个宏,但我希望有更优雅的方式,如CASERANGE(x,x + 10),它会生成: case x case x+1 case x+2 它甚至可能吗?

字符串格式技巧/文档

正在阅读Shaggy Frog对这篇文章的回复,并对以下代码行感兴趣: NSLog(@”%@”, [NSString stringWithFormat:@”%@:%*s%5.2f”, key, padding, ” “, [object floatValue]]); 我知道字符串格式是一个古老的艺术,但我有点做Cocoa / Obj-C编程,并在此过程中跳过几个等级。 哪个是学习NSString的stringWithFormat允许的所有字符串格式化技巧的好(最好)的地方? 我对Apple的字符串格式说明符页面很熟悉,但从我能说的内容来看,它并没有说明上面发生的%*s或%5.2f (更不用说3个明显的占位符后跟4个参数)发生了什么? !?