小编fie*_*sor的帖子

没有ARC的@autoreleasepool?

我是Xcode 4.2的新手,我还没有完全掌握ARC的速度.但是,我确实读到@autoreleasepool取代了自动释放池的手动使用,并且在引擎盖下做了一些特殊的魔法来与ARC玩得很好.

然而,当我在Xcode 4.2中启动一个新项目时,特别关闭了ARC选项,我仍然在模板代码中获得了@autoreleasepool语句.

这是什么交易?

xcode xcode4.2 automatic-ref-counting

31
推荐指数
1
解决办法
2万
查看次数

MSVC中的"interface"关键字是什么?

我正在浏览Windows 8.1 SDK和UnknownBase.h中的内容

typedef interface IUnknown IUnknown;
Run Code Online (Sandbox Code Playgroud)

我以前从未见过这个interface关键字.请注意,这绝对是一个.h标题,由处理cl.exe.它不是IDL文件,它不会被处理midl.exe.

我在网上找到了这个:http://msdn.microsoft.com/en-us/library/50h7kwtb.aspx

但是__interface不一样interface

有人能在这里提醒我吗?

c c++ com winapi visual-studio

14
推荐指数
1
解决办法
7167
查看次数

Emacs中的Java模式参数缩进

我在emacs中的java模式想要缩进函数参数,如下所示:

someLongFunctionName(
                     argumentNumberOne,
                     argumentNumberTwo,
                     argumentNumberThree,
                     argumentNumberFour
                     );
Run Code Online (Sandbox Code Playgroud)

这里有两个问题.首先,它希望将参数的开头与函数名的结尾对齐.其次,它希望将壁橱paren视为一个参数,从而将其与所有其他参数对齐.我不喜欢这两种行为.

我宁愿它像这样缩进我的代码:

someLongFunctionName(
    argumentNumberOne,
    argumentNumberTwo,
    argumentNumberThree,
    argumentNumberFour
);
Run Code Online (Sandbox Code Playgroud)

默认情况下,c-mode做得更好,我想尽可能将行为转移到java模式.

我仍然需要了解emacs缩进引擎是如何工作的,而且目前我还没有真正知道那么多的lisp.这两个学习练习肯定在我的板上,但目前快速复制粘贴解决方案将非常棒.

lisp java emacs

12
推荐指数
1
解决办法
1931
查看次数

为什么mmap()使用MAP_FAILED而不是NULL?

有谁知道为什么mmap()返回MAP_FAILED而不是NULL?在大多数系统上,似乎MAP_FAILED是(void*) - 1.为什么mmap()不使用NULL代替?我知道地址0x0在技术上是一个有效的内存页面,而(void*) - 1永远不会是一个有效的页面.但我的猜测是mmap()实际上永远不会实际返回页面0x0.例如,在Windows上,VirtualAlloc()在出错时返回NULL.

假设mmap()永远不会返回0x0是否安全?大概是对mmap()的成功调用应该将可用内存返回给调用者.地址0x0永远不可用,因此成功时永远不应返回.这种情况会让使用0x0作为失败的哨兵似乎是明智的,这就是为什么我首先对MAP_FAILED的存在感到困惑.

linux macos posix mmap ios

12
推荐指数
1
解决办法
4924
查看次数

逻辑!! 没什么

我刚刚在Microsoft的guiddef.h头文件中找到了这个:

__inline bool operator==(REFGUID guidOne, REFGUID guidOther)
{
    return !!IsEqualGUID(guidOne,guidOther);
}
Run Code Online (Sandbox Code Playgroud)

是否有任何意义!!,或者是某些开发人员那天感觉很可爱?

c c++ com

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

JNI EnsureLocalCapacity - 为什么?

在这里查看JNI文档:http://download.oracle.com/javase/1.5.0/docs/guide/jni/spec/functions.html

具体来说,看一下EnsureLocalCapacity函数的描述中所说的内容:

为了向后兼容,VM分配超出确保容量的本地引用.(作为调试支持,VM可能会向用户发出警告,指出正在创建太多本地引用.在JDK中,程序员可以提供-verbose:jni命令行选项来打开这些消息.)VM调用FatalError if除了确保的容量之外,不能再创建本地引用.

此外,看看PushLocalFrame如何采用"容量"参数.(顺便说一下,它没有提到这是硬限制,还是像EnsureLocalCapacity一样的软限制).

关于本地参考容量的所有这些废话究竟来自哪里?文档说VM会愿意分配超出当前正式容量的引用,那么为什么它不这样做并且保持所有这些容量混乱的API?

为了给C做一个比喻,感觉我被要求预先计划我要做多少次malloc()调用,感觉有点荒谬.

有什么重要的东西,我只是没有在这里看到?

java java-native-interface

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

当app在后台时,没有获得didReceiveMemoryWarning

didReceiveMemoryWarning当我的应用程序在iPad模拟器上处于后台状态时,我注意到我的视图控制器没有调用他们的方法.更具体地说,我applicationDidEnterBackground在我的日志中看到调用,然后我点击"模拟内存警告"按钮,然后我注意到一个特殊的缺乏任何didReceiveMemoryWarning呼叫.

但是,当我将应用程序带回前台时,我突然didReceiveMemoryWarning接到呼叫,好像它已经排队了.

我在这里感到困惑的是,如果我的应用程序真的在后台,或者它只是暂停了.有没有办法告诉模拟器?

此外,如果它尚未暂停,而且实际上只是在后台,那么我会觉得愚蠢,我无法处理didReceiveMemoryWarning.因为这意味着只有前台应用程序才能处理内存警告以释放空间,这当然很奇怪,前景应用程序可能只是可能数十个正在运行的应用程序中的一个,如果它们会更有意义都可以释放记忆.

无论如何,主要问题是:为什么我不didReceiveMemoryWarning进入后台状态?而且,我真的被停职了吗?我怎么说?

cocoa-touch didreceivememorywarning ios

8
推荐指数
1
解决办法
1023
查看次数

C积分溢出?

看看这个.编译器抱怨我有一个整数溢出,但是当我查看C89标准的整数提升规则以及该表达式中的值时,我觉得没有溢出.

rutski@imac:~$ cat test.c 
#include <stdio.h>
#include <inttypes.h>

const uint32_t value =
    (0x7F-0x00 + 1) * (256 + 256*256 + 256*256*256) +
    (0xDF-0xC2 + 1) * (256 + 256*256 + 256*256*256);

int
main(void)
{
    printf("value = %"PRIu32"\n", value);
    return 0;
}
rutski@imac:~$ gcc -std=c89 -pedantic -Wall -Wextra test.c
test.c:5: warning: integer overflow in expression
test.c:6: warning: integer overflow in expression
test.c:6: warning: overflow in constant expression
rutski@imac:~$ ./a.out 
value = 2661195264
rutski@imac:~$ 
Run Code Online (Sandbox Code Playgroud)

此外,谷歌确认2661195264的答案是该表达式的正确值!(见此链接)

那么,当整数溢出时程序如何产生正确的值呢?更重要的是,该表达式中的整数溢出是如何开始的?

c c89

8
推荐指数
1
解决办法
381
查看次数

Android OpenGL ES支持无处不在?

我需要知道如果我选择在OpenGL中绘制我的绘图而不是android.graphics中的android原生2D图形API,那么我将失去多少潜在的安装量.*

Android文档似乎暗示基本上所有手机都支持OpenGL ES API:http://developer.android.com/guide/topics/graphics/opengl.html

OpenGL ES 2.0 is supported by most Android devices 
Run Code Online (Sandbox Code Playgroud)

现在,这是否意味着即使是便宜的商品设备也会支持OpenGL ES 2.0?更便宜的手机可能会有软件渲染,还是总是硬件渲染?

我认为文档的"大多数Android设备"的措辞意味着可能确实有一些手机运行android-8,但只是没有OpenGL ES 2.0的硬件.但到底有多少部手机呢?

android opengl-es opengl-es-2.0

8
推荐指数
1
解决办法
4103
查看次数

Emacs revert-buff(su):什么是su?

Mx revert-buffer命令的emacs帮助页面说它被绑定到"su".到底是什么?我知道Mx是Meta-x(通常是alt-x),我知道Cx是Control-x.但是什么是苏?

emacs

8
推荐指数
2
解决办法
574
查看次数