Tag: objective c

C指针与Objective-C指针

我来自Objective-C背景,我正在尝试扩展我在C中的知识。然而,有一件事使我困惑,这就是C和Obj-C中指针之间的区别。 正如您在下面的示例中所看到的,两种语言之间的行为似乎有点不同,我想知道您是否可以帮助解释原因? C代码工作正常: void myFunction() { int x, *pointerX; pointerX = &x; *pointerX = 5; // Prints: “x is 5” printf(“x is: %i”, x); } Obj-C代码失败: – (void)myMethod { NSString *string = @”Caramel coffee”, *stringPointer; stringPointer = &string; // Warning: Assignemnt from incompatible pointer type *stringPointer = @”Chocolate milkshake”; // Exception: Incompatible types in assignment […]

这个’ – >’在c / objective-c中意味着什么?

我正在查看一些代码,我遇到了一些我不知道其含义的语法。 ‘ – >’是什么意思? -(void) getTransformValues:(struct transformValues_*) tv { tv->pos = positionInPixels_; tv->scale.x = scaleX_; tv->scale.y = scaleY_; tv->rotation = rotation_; tv->skew.x = skewX_; tv->skew.y = skewY_; tv->ap = anchorPointInPixels_; tv->visible = visible_; }

Objective-C检查是否定义了Structs

我的iOS应用程序可以使用可选的外部第三方库。 我想到了使用这个答案( 弱链接 – 检查一个类是否存在并使用该类 )并在执行特定于此库的代码之前检测该类是否存在。 但是,我发现这个外部库不是作为Objective-C类编写的,而是作为C STRUTS和函数编写的。 是否有类似的技术可以让我检查C Strut或函数是否存在? 或者一些更好的替代方法,看看这个库是否在运行时存在?

是C / C ++ / ObjC / Swift / JS Apple是唯一允许iPhone开发的语言吗?

根据Daring Fireball上的这篇文章 , 今天推出的iPhone SDK协议新版本与iPhone OS 4.0一起发布,特别禁止任何 未在C,C ++ Objective-C或JavaScript中实现的 iPhone应用程序。 这里明显的影响是用这些以外的语言编写的各种程序。 您是否也阅读了新协议中的条款? 更新:这是Daring Fireball上印刷的条款: 3.3.1 – 应用程序只能以Apple规定的方式使用Documented API,不得使用或调用任何私有API。 应用程序必须最初用Objective-C,C,C ++或JavaScript编写,由iPhone OS WebKit引擎执行,并且只有用C,C ++和Objective-C编写的代码才可以编译并直接链接到Documented API(例如,禁止通过中间翻译或兼容性层或工具链接到Documented API的应用程序。

需要帮助将C函数转换为Objective C方法

我有一个用C编写的函数,它相当大,目前只在C文件的main()函数中运行,而我一直在测试它。 这是它的声明 void getData(const char* encodedBuffer, int user); 如果你想看到getData的内容,那么这就是它的pastebin。 截至目前,我只是传递encodedBuffer,我将有一个全局变量,由getData函数更新。 我想知道将这样的基于C的函数转换为Objective-C协议方法的正确方法是什么。 现在我正在这样设置它 iDriver.h(我的界面/协议) #import @protocol iDriver -(void)getData; -(void)cancel; @end DriverOne.h(实际实现协议方法的类) #import #import “iDriver.h” @interface DriverOne : NSObject @end DriverOne.m #import “DriverOne.h” @implementation DriverOne enum Status getData(char* encodedBuffer, int user) { // Copy C code which I showed in the link earlier // to above into […]

创建一个int数组,其大小基于NSArray的大小

我正在尝试根据运行时获得的大小创建并归零一个int数组: size = [gamePiece.availableMoves.moves count]; //debugger shows size = 1; int array[size]; //debugger shows this as int[0] ! memset(array, 0, size); indexes = array; size和indexes都是这个类的ivars: int size; int* indexes; 不过,我最终得到了一个0长度的数组。 如何使用[gamePiece.availableMoves.moves count]指示的大小创建它?

在C / Objective-C中使用Python的bisect

我希望将这个用Python编写的类https://stackoverflow.com/a/4113400/12920移植到Objective-C或C中。 它使用了一种名为bisect.bisect_right东西。 我对Python没有太多经验,那么如何在C / obj-c中实现呢?

我应该如何命名为一个结构设计的头文件

我有一个名为NDPlane的结构,我希望按照这个答案把它放在自己的文件中。 为避免混淆,因为这只是NDPlane对象的Objective-C接口,我该如何命名文件? ndplane.h , plane.h或struct_NDPlane.h等…

将uint8_t数组传递给方法

我有四个uint8_t数组: uint8_t arrayOne[12] = { 0x00,0x01,0x00,0x00,0x00,0x06,0xFE,0x03,0x01,0xC1,0x00,0x01 }; uint8_t arrayTwo[12] = { 0x00,0x01,0x00,0x00,0x00,0x06,0xFE,0x03,0x4E,0x2D,0x00,0x0C }; uint8_t arrayThree[12] = { 0x00,0x01,0x00,0x00,0x00,0x06,0xFE,0x03,0x01,0xF3,0x00,0x01 }; uint8_t arrayFour[12] = { 0x00,0x01,0x00,0x00,0x00,0x06,0xFE,0x03,0x20,0x04,0x00,0x01 }; 我已将它们添加到数组中: uint8_t *theArray[] = { arrayOne,arrayTwo,arrayThree,arrayFour }; 现在我想将此数组传递给方法,例如: [self theMethod:theArray]; 至: -(void)theMethod:(uint8_t *)pointersArray[]{ … … } 将数组指向方法的正确方法是什么 – (void)theMethod …?

写入磁盘的最快方式 – iOS

我正在使用C函数并希望将数据保存到磁盘。 读取和写入此数据的最快方法是什么。 我将char*和intptr_t为NSString和NSNumber ,将它们存储在字典中,然后将每个字典存储到NSMutableArray 。 但是,是否有更快的方式来存储此数据而无需将值包装在Objective-C对象中? static void _print_image(const struct mach_header *mh, bool added) { Dl_info image_info; int result = dladdr(mh, &image_info); if (result == 0) { printf(“Could not print info for mach_header: %p\n\n”, mh); return; } const char *image_name = image_info.dli_fname; const intptr_t image_base_address = (intptr_t)image_info.dli_fbase; const char *log = added ? “Added” : […]