Tag: iphone

是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的应用程序。

在iPhone中使用FFMPEG音频转换

我在iPhone中使用ffmpeg,从mms服务器读取wma流,但我想使用ffmpeg中的ALAC编码器将流保存到m4a文件,问题是尝试保存原始流,处理流使用avcodec_decode_audio2,文件甚至无法用wma格式识别,显然,没有播放,所以在将流转换为m4a之前(使用avcodec_encode_audio)我想确保正在处理和保存正确的流。 有没有人经历过这种事情? 谢谢 PS我正在使用CFWriteStreamWrite编写字节缓冲区,一切似乎都没问题。 我的代码: while (av_read_frame(mms_IOCtx, &_packet) >= 0) { if (_packet.stream_index == audioStreamIdx) { uint8_t *_packetData = _packet.data; int _packetSize = _packet.size; // Align output buffer uint8_t audio_buf[(AVCODEC_MAX_AUDIO_FRAME_SIZE * 3) / 2 + 16]; int16_t *aligned_buffer; size_t buffer_size; int audio_size, len; buffer_size = sizeof(audio_buf); aligned_buffer = align16(audio_buf, &buffer_size); while (currentState != STATE_CLOSED && […]

Objective C方法和语法

使用objective-c时我有点困惑。 这部分特别让我感到困惑。 编写这样的代码之间的目的和/或区别是什么…… object = [object method]; 和 [object method]; 学习目标-c到现在为止,我总是认为我可以做这样的事情。 说我已经创造了这个.. NSString *object = [[NSString alloc]initWithFormat:@”%@”]; 然后我就可以做到我想要的东西,就像那样…… [object applyAnyMethodHere]; 但现在我看到这样的事情…… object = [object applyAnyMethodHere]; 这两者有什么区别?

如何在运行时为Cocos2D CCMenu menuWithItems动态创建va_list?

我在CCMenu课上度过了一段难忘的时光。 要使用此类创建菜单,它会强制您调用名为initWithItems的方法,该方法采用va_list。 我需要在运行时生成这个列表,并且我读到创建一个C数组并传递它可以像va_list一样起作用,只是它失败了。 我在va_list中有一个我想要的NSArray项目,这些项目是CCMenuItem的SUBCLASS,这是menuWithItems期望在va_list中的类。 如果你在编译时硬编码这个列表,它工作正常,但我动态创建这个列表的尝试不起作用。 这有什么问题? MenuItemButton是一个CCMenuItem子类。 NSArray *menuItems = [self getMenuItemsArray]; // Returns an NSArray of MenuItemButtons MenuItemButton *argList = (MenuItemButton *)malloc( sizeof(MenuItemButton *) * [menuItems count] ); [menuItems getObjects:(id *)argList]; CCMenuAdvanced* menu = [CCMenuAdvanced menuWithItems:argList]; 这在运行时崩溃,BAD_ACCESS。 我知道va_list应该是null终止的,我不知道在调用getObjects后我的代码是否就是这种情况,或者甚至是问题。

memcpy导致’exc bad access’

我试图循环一个数组并复制数据,但在1023循环后,我得到一个exc bad access消息抛出,我感觉它可能与我的记忆有关。 在我的循环中,我需要将数据附加到我的totalValues数组,所以我这样做: memcpy(totalValues + totalCopied, tempBuffer, 600 * sizeof(float)); 这是在一个循环中完成的,并且totalCopied会跟踪已经将多少数据附加到totalValues以便我知道在循环再次点击memcpy时从哪里写入。 我不确定为什么会出现“错误访问”错误,但我的理论是内存不连续,因此, totalValues + totalCopied行可能会造成麻烦。 我不确定在这种情况下是否会抛出错误,或者无论如何都会覆盖内存。 有趣的是,它总是发生在1023循环之后。 如果我删除’memcpy’行,程序循环没有任何问题。 可能导致这种情况的任何想法? 编辑 – 原因是内存分配是硬编码为另一个文件。 通常,在内存分配之前我不知道文件的长度,那么如何确保在运行时分配足够的内存?

如何传入一个void参数的对象?

我正在使用MusicPlayer API,我正在尝试解决用户回调问题。 我有用户事件放在MIDI的每个音符事件中。 播放音符时,这些用户事件将音符的整数值传递给用户回调函数* inEventData: void noteUserCallback (void *inClientData, MusicSequence inSequence, MusicTrack inTrack, MusicTimeStamp inEventTime, const MusicEventUserData *inEventData, MusicTimeStamp inStartSliceBeat, MusicTimeStamp inEndSliceBeat) { UserEvent* event = (UserEvent *)inEventData; UInt32 size = event->length; UInt32 note = event->playedNote; UInt32 timestamp = event->tStamp; NSLog(@”Size: %lu Note: %lu, Timestamp: %lu”, size, note, timestamp); switch (note) { case 60: [whiteKey60 […]

地板加倍数小数点

我希望将其小数位于可变小数位的二进制位置(在iphone sdk中)。 这里有一些例子向你展示我的意思 NSLog(@”%f”,[self floorMyNumber:34.52462 toPlace:2); // should return 34.52 NSLog(@”%f”,[self floorMyNumber:34.52662 toPlace:2); // should return 34.52 NSLog(@”%f”,[self floorMyNumber:34.52432 toPlace:3); // should return 34.524 NSLog(@”%f”,[self floorMyNumber:34.52462 toPlace:3); // should return 34.524 NSLog(@”%f”,[self floorMyNumber:34.12462 toPlace:0); // should return 34.0 NSLog(@”%f”,[self floorMyNumber:34.92462 toPlace:0); // should return 34.0 任何想法如何做到这一点? 解 -(double)floorNumberByDecimalPlace:(float)number place:(int)place { return (double)((unsigned int)(number * (double)pow(10.0,(double)place))) […]

变量列表参数

说我有2个function void f1(int p1, int v1, …); 和 void f2(int v1, …); 在f1里面我想将所有参数从variadic列表传递给f2: void f1(int p1, int v1, …) { f2(/*pass all variadic parameters*/); } 例如,当我调用f1(1, 2, 3, 4, 5)我想将2,3,4,5传递给f2

目标C:7 – 1 = 3?

NSLog(@”Before: %d”,currentArticle); currentArticle–; NSLog(@”SUBTRACT %d”,currentArticle); “currentArticle”是一个整数。 这只是在我的控制台中回显一次。 如果我不运行此减法,则数字“currentArticle”保持为7。 这是在主线程中运行,每个用户交互只运行一次。 我也试过了 currentArticle = currentArticle – 1; 结果相同。 我服用疯狂的药吗? 谢谢! 编辑: 声明如下: extern int *currentArticle; 稍后分配为: currentArticle = 0; 我尝试重写为: int *curArticle; // in my .h file curArticle = 1; 然后我跑了 curArticle–; 它仍然减少两个…… 我已经逐步完成了代码并确保没有其他调用这个变量。感谢您的反馈到目前为止,我会继续抨击它。

从整数中获取浮点值

如何从整数除法中获得浮点数或实数值? 例如: double result = 30/233; 产量为零。 我想要带小数位的值。 然后我如何格式化,因此当与字符串一起使用时,只显示两个小数位?