Tag: objective c

Objective-C运行时:为class_addIvar添加大小和对齐的内容?

Objective-C Runtime提供了class_addIvar C函数 : BOOL class_addIvar(Class cls, const char *name, size_t size, uint8_t alignment, const char *types) 我对size和alignment什么alignment ? 我正在添加一个类型为UITextPosition *的实例变量,但是没有UITextPosition对象在范围内。 对于size ,我可以只做sizeof(self) ,其中self是UITextField的子类吗? 即,我可以假设UITextPosition对象与UITextField对象的大小相同吗? 如何alignment ?

内存管理:NSString的stringWithCString:编码:

假设我从某个函数中获取了一个C字符串: char * mystring = SomeCFunction(…); 我拥有这个字符串(当我完成时,我负责释放它)。 如果,在Objective-C中,我使用以下命令创建NSString * : NSString * mynsstring = [NSString stringWithCString:mystring encoding:NSUTF8StringEncoding]; 我还有责任释放原来的C字符串吗? 我假设答案是肯定的,但我在文档中找不到明确的答案 – 而相反方法( cStringUsingEncoding )的function虽然很明显,但确实让我暂停,因为它为你处理了cString释放。 如果答案是肯定的,那么我还要负责确保在使用NSString *之前我没有释放c字符串,或者该函数是否为我复制字符串? 我问这个是因为stringWithCString的文档说: 返回包含给定C数组中的字节的字符串,根据给定的编码进行解释。 这仍然让我想知道它是否真的复制了字节,或者只是在内部指向它们(我基本上只是在做一个演员)。

是否可以将Swift类转换为C void *指针?

是否可以将Swift类转换为C void *指针? // swift class class MyClass { } var myClass = MyClass() var p: UnsafeMutablePointer = myClass //<- failed //c function void someSwiftClass(void *context); 谢谢

“EXC_BAD_ACCESS:无法恢复以前选择的帧”错误,数组大小?

我有一个算法来创建Eratosthenes的筛子并从中拉出素数。 它允许您输入筛子的最大值,算法为您提供低于该值的质数并将它们存储在c样式数组中。 问题:一切正常,值高达500.000,但是当我输入一个大值 – 运行时 – 它在xcode中给出了以下错误信息: Program received signal: “EXC_BAD_ACCESS”. warning: Unable to restore previously selected frame. Data Formatters temporarily unavailable, will re-try after a ‘continue’. (Not safe to call dlopen at this time.) 我的第一个想法是我没有使用足够大的变量,但是当我使用’unsigned long long int’时,这应该不是问题。 此外,调试器将我指向我的代码中的一个点,其中数组中的一个点被赋值。 因此我想知道arrays有最大限制吗? 如果是:我应该使用NSArray吗? 如果不是,那么基于此信息导致此错误的原因是什么? 编辑:这是代码的样子(它不完整,因为它在发布的最后一行失败)。 我正在使用垃圾收集。 /*————————–SET UP————————–*/ unsigned long long int upperLimit = 550000; // […]

使用clang在命令行上编译多个Objective-C文件

希望简单的问题。 我正在尝试使用clang从命令行学习基本的Objective-C编译。 我知道Xcode是复杂项目的更好解决方案,我计划尽快转向它,但我个人认为如果我可以在终端中手动编译它,我会更好地理解一种语言,而对于小型的入门编程项目,我发现它更少在终端编译比在必须启动新项目时更麻烦。 所以问题是:如何编译包含多个文件的Objective-C程序(从命令行)? (我正在尝试从Kochan教科书的第7章开始执行分数程序,其中main.m和Fraction.m文件都是#import“Fraction.h”,以及导入Foundation框架的Fraction.h文件。)要编译单个文件,我使用类似的东西 clang -fobjc-arc main.m -o prog1 但是,如果我键入它并且我想在项目中包含除main.m之外的文件,我会收到错误,包括: ld: symbol(s) not found for architecture x86_64 clang: error: linker command failed with exit code 1 (use -v to see invocation) 如果我尝试将其他文件作为参数添加到命令中,例如 clang -fobjc-arc main.m Fraction.h Fraction.m -o prog1 然后我明白了 clang: error: cannot specify -o when generating multiple output files 如果我然后删除-o参数就像 clang -fobjc-arc main.m […]

Objective-C / C给出枚举默认值

我在某处读到了枚举默认值,如下所示: typedef enum { MarketNavigationTypeNone = 0, MarketNavigationTypeHeirachy = 1, MarketNavigationTypeMarket = 2 } MarketNavigationLevelType; ..但我不记得这样做的价值。 如果我不给他们默认值 – 然后有人后来重新订阅枚举 – 有什么风险? 如果我总是使用枚举名称,甚至不用它们的整数值来引用它们,那么有任何风险吗? 我能想到的唯一可能的问题是,如果我从数据库中的int值初始化枚举 – 并且重新排序枚举 – 那么应用程序将会中断。

Objective C的IDE

哪些IDE或开发工具最适合涉及Objective C,C和C ++的项目? 是否有一个支持所有三种语言的通用IDE。

是否有一个MD5库不同时需要整个输入?

我正在研究Objective C Cocoa应用程序。 我在CommonCrypto中测试了CC_MD5 ,它运行得很好; 然而,当我给它5个gygabyte文件时,我的整个计算机冻结并崩溃。 MD5算法将输入处理为512字节的块,并不一次真正需要所有输入。 在Objective C或C中是否有一个库要求下一个512字节的块而不是一次性获取所有输入?

在Mac上检索RAM信息?

我需要检索系统中存在的RAM总量以及当前使用的总RAM,因此我可以计算一个百分比。 这类似于: 在MacOS X上检索系统信息? 但是,在那个问题中,最佳答案建议如何通过以下方式获取RAM: /usr/bin/vm_stat 由于我的程序的性质,我发现我不能从该文件中读取 – 我需要一种方法,它将为我提供RAM信息,而无需简单地打开文件并从中读取。 我正在寻找与函数调用有关的东西。 这样的东西最好是: getTotalRam()和getRamInUse() 。 我显然不希望它那么简单但我正在寻找除了从文件中读取之外的解决方案。 我正在运行Mac OS X Snow Leopard,但最好能获得适用于所有当前Mac OS X平台(即Lion)的解决方案。 解决方案可以是C ++,C或Obj-C,但是在我的情况下C ++是最好的解决方案,所以如果可能的话请尝试用C ++提供。

IOS流程内部 – 如何获取信息?

我正在寻找一个API来监控普通iPhone上运行的任务(没有越狱)。 这些是关于: 寻找CPU使用率 (我的主要关注点)。 寻找内存使用情况。 寻找磁盘使用情况(读/写多少) 寻找网络使用情况(网络发送和接收的字节数:3G,Wifi,GSM)。 是否可以依赖在Mac上运行的IOS模拟器(或者我应该直接在设备上测试我的应用程序)? 我想我可以查看系统C库(sigint等)但我不确定是否能够检索此信息,除了当前运行的应用程序。 我知道一些监视器应用程序在全局使用上运行,但我希望能够按流程查找信息流程。 如果有人可以提供某些链接或有用的东西,那么我将开始进行更深入的调查。