小编mat*_*att的帖子

如何将iPhone OSStatus代码转换为有用的东西?

我对这款iPhone SDK及其文档感到有点不舒服......

我打电话给AudioConverterNew

在返回下的文档中:它说"返回状态代码"......真的......

到目前为止,通过玩这些参数我只能得到两个不同的错误,这两个错误都没有列在音频转换器参考的底部.

它们是'mrep'和'?tmf'(将OSStatus转换为char数组)但具体代码并不是真正重要的.

据我所知,随机错误代码是在随机文件中定义的,因此您不能只搜索一个文件,我找不到只是让您搜索错误代码以获取更多信息的帮助文档,并且我可以告诉你,在OS X中,你可以使用GetMacOSStatusErrorString()将错误转换为有用的东西,但没有iPhone等价?

任何帮助将不胜感激.

编辑:

好的,所以投射它们反过来(我检查'mrep',但不是那里的任何一种方式),fmt?在音频转换器api的列表中,如果有点模糊,但是很公平,仍然'perm'不存在(尽管它可能与模拟器不支持aac解码有关)和我的一般问题仍然存在.

macos error-handling cocoa cocoa-touch ios

65
推荐指数
9
解决办法
4万
查看次数

如何在c#中的字符串中的索引处设置字符?

someString[someRandomIdx] = 'g';
Run Code Online (Sandbox Code Playgroud)

这会给我一个错误,

我该如何实现上述目标?

编辑:

是的它是'string'类型

c#

23
推荐指数
3
解决办法
3万
查看次数

C#lambda,当你想到的时候没有采用局部变量值?

鉴于:

void AFunction()
{

   foreach(AClass i in AClassCollection)
   {
      listOfLambdaFunctions.AddLast(  () =>  {  PrintLine(i.name); }  );
   }
}

void Main()
{
    AFunction();
    foreach( var i in listOfLambdaFunctions)
       i();
}
Run Code Online (Sandbox Code Playgroud)

现在你会认为这样做会对等:

void Main()
{

    foreach(AClass i in AClassCollection)
       PrintLine(i.name);
}
Run Code Online (Sandbox Code Playgroud)

但它没有,它将做的是每次打印AClassCollection中最后一项的名称!所以基本上每个lambda函数都使用相同的项目.我怀疑"当lambda被创建时"或"当它使用其中使用的外部变量的快照时"可能会有一些延迟,或者基本上只是持有'对局部变量的引用'i'

所以我这样做了:

string astr = "a string";
AFunc fnc = () => { System.Diagnostics.Debug.WriteLine(astr); };
astr = "changed";
fnc();
Run Code Online (Sandbox Code Playgroud)

而惊喜,惊喜,它输出"改变了!"

我正在使用XNA 3.1(无论是什么c#)

到底是怎么回事?lambda函数以某种方式存储变量或其他东西的"引用"吗?反正这个问题呢?

c# lambda

12
推荐指数
3
解决办法
9909
查看次数

初始化的类组件顺序

class D: A
{
    B obj;
    C obj2;
}
Run Code Online (Sandbox Code Playgroud)

为了什么建设这里保证

我知道D将在A,B和C之后构建,但我真正想知道的是A是否保证在B或C之前构造,或者甚至是否保证在C之前构造B.

我知道你可以有一个明确的初始化列表:

D(): A(), B(), C()
{}
Run Code Online (Sandbox Code Playgroud)

但初始化列表是否确定了初始化的顺序

此外,是否有任何组件是否具有默认构造函数?

c++ standards

11
推荐指数
2
解决办法
468
查看次数

在iphone上绘制屏幕缓冲区的最快方法

我有一个"软件渲染器",我从PC移植到iPhone.使用iphone上的像素缓冲区手动更新屏幕的最快方法是什么?例如在Windows中,我发现的最快的功能是SetDIBitsToDevice.

我对iphone或库不太了解,似乎有很多层和不同类型的UI元素,所以我可能需要大量的解释......

现在我只是不断更新opengl中的纹理并将其渲染到屏幕上,我非常怀疑这将是最好的方法.

更新:

我试过openGL屏幕大小的纹理方法:

我得到了17fps ......

我使用了512x512纹理(因为它需要是2的幂)

只是呼唤

glTexSubImage2D(GL_TEXTURE_2D,0,0,0,512,512,GL_RGBA,GL_UNSIGNED_BYTE, baseWindowGUI->GetBuffer());
Run Code Online (Sandbox Code Playgroud)

似乎对所有减速都负有责任.

评论它,并留下我所有的软件渲染GUI代码,以及现在非更新纹理的渲染,导致60fps,30%的渲染器使用,并且没有来自cpu的显着尖峰.

请注意,GetBuffer()只是返回一个指向GUI系统软件后台缓冲区的指针,无论如何都没有重新调整缓冲区或调整缓冲区大小,它的大小和格式都适合于纹理,所以我很确定减速有与软件渲染器无关,这是个好消息,看起来如果我能找到一种方法在60点更新屏幕,软件渲染应该暂时起作用.

我尝试使用512,320而不是512,512进行更新纹理调用,这奇怪甚至更慢......以10fps运行,也表示渲染利用率仅为5%,并且在openGLES内调用Untwiddle32bpp时所有时间都被浪费了.

我可以将我的软件渲染更改为原生渲染为任何pixle格式,如果它会导致更直接的blit.

fyi,在2.2.1 ipod touch G2上测试(就像类固醇上的Iphone 3G一样)

更新2:

我刚刚写完了CoreAnimation/Graphics方法,它看起来不错,但是我有点担心它如何更新每一帧的屏幕,基本上抛弃旧的CGImage,创建一个全新的...在'someRandomFunction中查看它'下面:这是更新图像的最快方式吗?任何帮助将不胜感激.

//
//  catestAppDelegate.m
//  catest
//
//  Created by User on 3/14/10.
//  Copyright __MyCompanyName__ 2010. All rights reserved.
//




#import "catestAppDelegate.h"
#import "catestViewController.h"
#import "QuartzCore/QuartzCore.h"

const void* GetBytePointer(void* info)
{
    // this is currently only called once
    return info; // info is a pointer to the buffer
}

void ReleaseBytePointer(void*info, const void* pointer)
{
    // don't …
Run Code Online (Sandbox Code Playgroud)

iphone user-interface rendering

10
推荐指数
1
解决办法
6501
查看次数

除以0的MSVC++错误,永远不会发生!固定?

const int bob = 0;

if(bob)
{
    int fred = 6/bob;
}
Run Code Online (Sandbox Code Playgroud)

你将在完成除法的行上得到一个错误:"错误C2124:除以或除以零"

这是蹩脚的,因为'if'检查失败是不可避免的,因为除法将导致div为0.坦率地说,我认为编译器甚至没有理由评估'if'中的任何内容,除了确保支撑完整性.

无论如何,显然这个例子不是我的问题,我的问题来自于做复杂的模板尝试在编译时尽可能多地做,在某些情况下参数可能是0.

反正有没有解决这个错误?或禁用它?或者比这更好的解决方法:

目前我能想到的唯一工作(我之前遇到过与递归枚举访问相同的问题)是使用模板特化来执行'if'.

哦是的,我正在使用Visual Studio Professional 2005 SP1和vista/win7修复程序.

c++ compiler-construction visual-c++

9
推荐指数
1
解决办法
1471
查看次数

如何为ANOTHER mac设置iphone开发证书

我经历了一次设置这个过程,但是现在我需要这样做,这样我们就可以使用一个帐户在两台Mac上进行开发.所有演练告诉我

通过钥匙串访问在新Mac上创建签名请求或某事,生成一些私钥和公钥BS,然后它说要去开发人员门户并"添加"新证书,除了我看起来不像你只能有一个!我已经尝试过只下载原始证书,但这不起作用,它没有出现在'我的证书下它并没有'绑定'到任何键...

之前我曾经历过这个过程,我所能做的只是删除原始证书并创建一个新证书,但这无疑会阻止原始Mac的工作......

谁知道它是怎么做的?

谁知道为什么苹果让我们通过这样的过程!?这就像在世界上最困难的事情!

iphone certificate

7
推荐指数
1
解决办法
4470
查看次数

iphone:浮动转换为无符号整数如果它们是负数则设置为0?

试试看:

volatile float bob = -344.0f;
unsigned int fred = (unsigned int)bob;

printf("%d\n",fred);
Run Code Online (Sandbox Code Playgroud)

输出将为0.

很明显我期待它就好像我已经从一个带符号的int转换为一个未编译的int(它确实包装并在iphone上按预期运行)

我们假设它与浮点设置有关.

有任何想法吗?

iphone floating-point casting

7
推荐指数
1
解决办法
2450
查看次数

试图理解C预处理器

为什么这些代码块产生不同的结果?

一些常用代码:

#define PART1PART2 works
#define STRINGAFY0(s) #s
#define STRINGAFY1(s) STRINGAFY0(s)
Run Code Online (Sandbox Code Playgroud)

情况1:

#define GLUE(a,b,c) a##b##c  
STRINGAFY1(GLUE(PART1,PART2,*))
//yields
"PART1PART2*"
Run Code Online (Sandbox Code Playgroud)

案例2:

#define GLUE(a,b) a##b##*
STRINGAFY1(GLUE(PART1,PART2))
//yields
"works*"
Run Code Online (Sandbox Code Playgroud)

案例3:

#define GLUE(a,b) a##b
STRINGAFY1(GLUE(PART1,PART2*))
//yields
"PART1PART2*"
Run Code Online (Sandbox Code Playgroud)

我正在使用VS.net 2005 sp1中的MSVC++

编辑:目前我认为预处理器在扩展宏时的工作方式如下:步骤1: - 取出正文 - 删除##运算符周围的任何空格 - 解析字符串,如果找到的标识符与名称匹配一个参数: - 如果它在##运算符旁边,用参数的文字值(即传入的字符串)替换标识符 - 如果它不在##运算符旁边,则运行整个解释过程首先是参数的值,然后用该结果替换标识符.(忽略stringafy单个'#'case atm) - 删除所有##运算符

第2步: - 获取结果字符串并解析任何宏

现在,我认为所有3个案例都应该产生完全相同的结果字符串:

PART1PART2*

因此,在第2步之后,应该导致

作品*

但至少应该导致同样的事情.

c c++ stringification c-preprocessor

6
推荐指数
1
解决办法
463
查看次数

windows phone 7,xna,我如何更经常地对触摸屏进行采样

好吧,显然xna游戏只能以30fps的速度运行,这是一种耻辱,因为我们在iPhone上的游戏看起来好多了60 ...

无论如何,因为获得有关触摸屏状态的信息的唯一方法是获得其当前状态,实际上这意味着您只能以30 fps采样触摸屏.

即使我们的游戏必须以30fps运行,有没有办法从触摸屏获得更高分辨率的采样?也许通过回调?或者通过访问带有时间戳的触摸事件列表?

xna touchscreen windows-phone-7

5
推荐指数
1
解决办法
944
查看次数