问题列表 - 第47665页

Objective-C/cocoa框架中NSAutoreleasePool的神奇之处是什么?

我发现Objective-C/cocoa框架的一个例子有以下代码.

int main()
{
    NSAutoreleasePool *pool = [[NSAutoreleasePool alloc] init];

    // Create an array
    NSArray *month = [NSArray arrayWithObjects:@ ... nill];

    [pool drain];
}
Run Code Online (Sandbox Code Playgroud)
  • Q1:这背后的魔力是什么(为什么我需要NSAutoreleasePool代码?)?NSAutoreleasePoolpool drain块之间发生了什么魔力?我觉得我不需要释放*month自己.这是因为它在NSAutoreleasePoolpool drain块内吗?

  • Q2:使用Xcode,我已经获得了main()函数.在这种情况下,我该如何使用NSAutoreleasePoolpool drain

例如 :

int main(int argc, char *argv[])
{
    //NSAutoreleasePool *pool = [[[NSAutoreleasePool] alloc] init];
    return NSApplicationMain(argc,  (const char **) argv);
}
Run Code Online (Sandbox Code Playgroud)

cocoa objective-c

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

64位MFC版本中的访问冲突异常

我试图将32位应用程序移植到64位.计算似乎正确运行,但我无法正确配置视图.我在W7 x64机器上使用VS2005内的MFC,C++和OpenGL,Intel 10.0.027编译器.

当崩溃发生时,我收到以下消息:"3DApp.exe中0xffffffff8043b1b6的第一次机会异常:0xC0000005:位置0xffffffff8043b1b6处的访问冲突",这是堆栈跟踪:

ffffffff8043b1b6()  
user32.dll!UserCallWinProcCheckWow()  + 0x11d bytes 
user32.dll!DispatchMessageWorker()  + 0x12a bytes   
3DApp.exe!AfxInternalPumpMessage()  Line 183    C++
3DApp.exe!CWinThread::PumpMessage()  Line 896   C++
3DApp.exe!CWinThread::Run()  Line 625 + 0x13 bytes  C++
Run Code Online (Sandbox Code Playgroud)

注意请问为什么UserCallWinProcCheckWow被调用,我认为Wow后缀仅用于在64位计算机上模拟32位应用程序

显然,某处64位指针被视为32位指针,但我不能指出发生的位置.我从microsoft加载了调试符号,它显示了调用堆栈的顶部.

任何帮助非常感谢.莱昂

编辑

调用DispatchMessage的代码是:

    if (pState->m_msgCur.message != WM_KICKIDLE && !AfxPreTranslateMessage(&(pState->m_msgCur)))
{
    ::TranslateMessage(&(pState->m_msgCur));
    ::DispatchMessage(&(pState->m_msgCur));
}
Run Code Online (Sandbox Code Playgroud)

在这个阶段,pState的指针似乎是64位.

pState-> m_msgCu的状态:

  • pState-> m_msgCur {msg = 0x00000022 wp = 0x0000000000000000 lp = 0x0000000000000000} tagMSG
  • hwnd 0x0000000000020416 {unused = 0x00000000} HWND__*message 0x00000022 unsigned int wParam 0x0000000000000000 unsigned __int64 lParam 0x0000000000000000 __int64 time 0x000f3967 unsigned long
  • pt …

c++ 64-bit mfc visual-c++

4
推荐指数
1
解决办法
4635
查看次数

多列名称搜索MySQL

我目前正在进行实时搜索,我需要能够在两列中找到名称的一部分(我们需要分隔名字和姓氏).我个人希望保持命令简短,但是我能够让它工作的唯一方法是:

用户搜索

John Doe
Run Code Online (Sandbox Code Playgroud)

生成的SQL查询

SELECT * FROM users WHERE
(first_name LIKE '%john%' OR last_name LIKE '%john%') AND
(last_name LIKE '%doe%' OR last_name LIKE '%doe%');
Run Code Online (Sandbox Code Playgroud)

搜索字段是一个框,所以我做了一些简单的空格分隔.大多数情况下这不会超出三套条款,只是想知道是否有更好的方法来做到这一点.

注意: 我希望能够进行部分匹配.所以如果我找"John Do",我应该能找到John Doe

解决方案 在Rolando的帮助下,我确实提出了一个解决方案,发布给其他发现此问题的人.按照他的说明如何在下面创建索引,然后运行:

SELECT * FROM users WHERE
(MATCH(first,last) AGAINST ('+john* +do*' IN BOOLEAN MODE))
Run Code Online (Sandbox Code Playgroud)

mysql search wildcard where-clause

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

我想在使用Android Eclipse ADT插件的同时自定义构建过程

安装ADT插件后,以下构建器对于Android项目处于活动状态:

  • Android资源管理器
  • Android预编译器
  • Java Builder
  • Android Package Builder

查看输出目录,将创建以下工件:

  • resources.ap_(只是一个APK/ZIP资源,没有代码)
  • gen/R.java(自动生成的资源列表)
  • 带有java字节码的.class文件
  • classes.dex
  • $ {项目名称}的apk

对于我的项目,我自动生成了几个代码工件,并且通常需要更严格地控​​制构建过程.首先,我认为资源管理器负责创建resources.ap_,预编译器创建了R.java,java builder显而易见,然后Android Package Builder创建了classes.dex,然后组合了classes.dex和resources.ap_创建APK文件.

我禁用了前两个步骤并创建了一个自定义的预构建器,它构建了一个resources.ap_的副本,认为这是等效的.没有这样的运气.

不幸的是,最终的Android Package Builder似乎直接从res /中啜饮了资源而忽略了我的resources.ap_.实际上,除了生成R.java之外,前两个构建步骤似乎没有做太多其他工作.

这是它真正成问题的地方.如果我禁用最后的构建步骤并放下我自己的APK文件(具有完全相同的名称),我会收到以下错误:

[2011-02-27 20:25:28 - android-premium] ------------------------------
[2011-02-27 20:25:28 - android-premium] Android Launch!
[2011-02-27 20:25:28 - android-premium] adb is running normally.
[2011-02-27 20:25:28 - android-premium] Could not find android-premium.apk!
Run Code Online (Sandbox Code Playgroud)

所以我陷入困境:使用Android Package Builder(没有可辨别的配置),我必须提供单独的./res/文件.没有它,我无法让项目在设备上启动(而不是从Eclipse).

在这个领域,任何人都有更好的想法/经验吗?

eclipse ant android build adt

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

在itext中的阿拉伯语

我正在尝试使用带有以下代码的Itext在表格中的单元格(pdf)中打印阿拉伯文本

Font f = FontFactory.getFont("C:\\Windows\\Fonts\\arabtype.ttf");
t.addCell(new Cell(new Phrase(name,f)));
Run Code Online (Sandbox Code Playgroud)

名字是阿拉伯语文字,但它打印"????" 而不是阿拉伯文本

java arabic itext

3
推荐指数
2
解决办法
3796
查看次数

何时在HTML中使用onclick?

HI,

对于标记,您可以通过href或onclick执行javascript.

我何时应该使用onclick而不是href?

对我来说,只有onclick的优点是你可以隐藏访问者的javascript函数名称和参数.

html onclick href

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

GWT JUnit测试

我正在为GWT尝试一个非常JUnit测试,因为它失败了

public class CheckTest extends TestCase
{

    private ServiceAsync RPC;
    private HandlerManager EventBus;
    private CreateTopicPresenter.Display CTV;
    private CreateTopicPresenter CTP;

    protected void setUp() 
    {
        RPC= createStrictMock(ServiceAsync.class);
        EventBus = new HandlerManager(null);
        CTV= createStrictMock(CreateTopicView.class);
        CTP= new CreateTopicPresenter(CTV,RPC,EventBus);
    }
    public void testCheck()
    {

        CTP.View.getFirstMessage().setValue("MessageTest");
        assertTrue(CTP.View.getFirstMessage().getValue().equals("MessageTest"));
    }
Run Code Online (Sandbox Code Playgroud)

堆栈跟踪:

 java.lang.ExceptionInInitializerError
        at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
        at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39)
        at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25)
        at java.lang.reflect.Method.invoke(Method.java:597)
        at net.sf.cglib.proxy.Enhancer.setCallbacksHelper(Enhancer.java:619)
        at net.sf.cglib.proxy.Enhancer.setThreadCallbacks(Enhancer.java:612)
        at net.sf.cglib.proxy.Enhancer.registerCallbacks(Enhancer.java:581)
        at org.easymock.internal.ClassProxyFactory.createProxy(ClassProxyFactory.java:194)
        at org.easymock.internal.MocksControl.createMock(MocksControl.java:60)
        at org.easymock.EasyMock.createStrictMock(EasyMock.java:70)
        at com.BiddingSystem.client.CheckTest.setUp(CheckTest.java:26)
        at junit.framework.TestCase.runBare(TestCase.java:128)
        at junit.framework.TestResult$1.protect(TestResult.java:106)
        at junit.framework.TestResult.runProtected(TestResult.java:124)
        at junit.framework.TestResult.run(TestResult.java:109)
        at junit.framework.TestCase.run(TestCase.java:120)
        at junit.framework.TestSuite.runTest(TestSuite.java:230)
        at …
Run Code Online (Sandbox Code Playgroud)

gwt junit unit-testing

4
推荐指数
1
解决办法
6548
查看次数

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

锁定当前线程:可能的WTF?

在查看一些旧代码时,我们遇到了以下代码:

lock (System.Threading.Thread.CurrentThread) // Critical Section - no interrupting.
Run Code Online (Sandbox Code Playgroud)

我们的第一个反应是"WTF" - 代码锁定在当前线程上,这是每个线程上的一个不同的对象(除了在递归的情况下,这将是愚蠢的锁定,然后).看起来这个锁没有任何用途.我们想知道这是否确实是WTF,或者它是否真的有用.

c# multithreading locking

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

Android如何以编程方式启用/禁用自动同步

我需要知道如何以编程方式打开和关闭自动同步.

android sync

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