|
|
1
6
numero不是数值,它是指向表示数值的对象的指针。您尝试执行的操作将不起作用,大小将始终等于一个指针(32位平台为4,64位平台为8),并且您将向数据附加一些垃圾指针值,而不是数字。 即使尝试取消引用它,也无法直接访问支持NSNumber的字节并期望它工作。这是一个内部实现细节,可能会因版本而异,甚至在同一版本的不同配置(32位对64位,iPhone对Mac OS X,arm对i386对PPC)之间也会有所不同。仅仅打包字节并通过线路发送它们可能会导致另一端无法正确反序列化某些内容,即使您设法获得了实际数据。 你真的需要想出一个整数的编码,你可以把它放进你的数据中,然后把这些数字打包和解包到里面。比如:
在接收端,在使用ntohl将其转换为本机主机格式后,取出整数并使用numberWithInteger:重新创建一个NSNumber。 如果您试图发送最小的表示等,则可能需要更多的工作。
|
|
|
2
2
首先,NSNumber*NUMEO是“指向NSNumber类型的指针”,NSNumber类型是Objective-C对象。一般来说,除非文档中有明确说明,否则面向对象编程的经验法则是“对象选择如何表示其内部状态的内部细节对于对象实现来说是私有的,应该被视为黑盒。”同样,除非文档中说您可以做其他事情,您不能假设NSNumber使用的是C基元类型
下面是一个粗略的估计,当你
这让我们更清楚地知道,您要添加到
由于您在这一部分过程中似乎遇到了问题,因此,让我提出一个建议,它将为您节省无数个小时的调试时间,因为您肯定会遇到一些极其困难的实现错误: 放弃在机器之间发送原始二进制数据的想法,只在机器之间发送简单的ASCII/UTF-8格式的信息。
如果您认为这将是一个缓慢或低效的过程,那么我建议您首先使用简化的ASCII/UTF-8字符串化版本来解决所有问题。相信我,调试原始二进制数据毫无乐趣,而且能够
|
|
|
George Kim · 如何在iOS中模拟特定坐标空间中的触摸? 2 年前 |
|
|
BENG · 协调C++和Objective-C中结构的填充 2 年前 |
|
|
Community wiki · iPhone上ivar的继承问题 2 年前 |
|
|
Community wiki · 在OpenGL中显示YUV 2 年前 |
|
|
YosiFZ · pod更新依赖关系pod 2 年前 |
|
|
Community wiki · 查找iOS日历 2 年前 |