小编Ned*_*Ned的帖子

动画过渡在横向方向上无法正常工作

我的应用程序仅支持横向右侧方向.

我正在尝试转换到视图控制器的视图,但是当它执行过渡动画(例如卷曲)时,视图旋转90度(因此,模拟器仍处于横向右方向,但视图显示为旋转到90度).转换完成后,它将旋转到正确的方向.我的代码如下.

- (IBAction)buttonTouched
{
    MyViewController *aViewController = [[MyViewController alloc] initWithNibName:NSStringFromClass([MyViewController class]) bundle:nil];

    [UIView transitionFromView:self.view 
                        toView:aViewController.view 
                      duration:2 
                       options:UIViewAnimationOptionTransitionCurlUp 
                    completion:NULL];
}
Run Code Online (Sandbox Code Playgroud)

看起来好像视图没有获得"方向已更改"通知,因此它以纵向显示,然后在动画结束后更改为横向.我已经在IB中进行了设置,所以它都是在景观中布局的.

编辑:我也尝试将视图控制器添加到自己的IB文件并转换到该视图(想想可能在初始化和转换之间过于接近)但是同样的事情发生了.

iphone animation transition objective-c uiview

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

在长时间运行的后台线程上定期耗尽自动释放池的最佳方法?

在开发人员文档中,它说:

如果您的应用程序或线程长寿并且可能生成大量自动释放的对象,则应定期排空并创建自动释放池(如主线程上的Application Kit); 否则,自动释放的对象会累积,并且您的内存占用会增加.但是,如果您的分离线程没有进行Cocoa调用,则不需要创建自动释放池.

我想知道最好的办法是什么.我认为有几种方法可行,但不知道哪种方法是"最好的".我目前有一个启动线程的方法,并让它等待执行操作:

- (void)startThread
{
    NSAutoreleasePool *pool = [[NSAutoreleasePool alloc] init];

    accessoryRunLoop = [NSRunLoop currentRunLoop];

    //Add a dummy port to avoid exiting the thread due to no ports being found
    [accessoryRunLoop addPort:[NSMachPort port] forMode:NSDefaultRunLoopMode];

    while(accessoryThreadIsRunning)
    {
        //Keep the thread running until accessoryTheadIsRunning == NO
        [accessoryRunLoop runMode:NSDefaultRunLoopMode beforeDate:[NSDate distantFuture]];
    }

    [pool release];
}
Run Code Online (Sandbox Code Playgroud)

我能想到的选择是:

1)在while中添加一个计数器(accessoryThreadIsRunning),这样每50或100次它将耗尽自动释放池并创建一个新的.

2)每次我在该线程中执行一个方法(使用performSelector:onThread :),我可以创建一个自动释放池,然后在方法结束时释放它.

3)制作一个计时器,以便排空一个池,然后定期创建.

我认为选项1是最好的,但想知道我应该采用不同的方式做到这一点.谢谢!

multithreading objective-c autorelease

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

在NDK中使用资源文件

我有一个我正在创建的NDK库,需要包含和访问二进制数据文件(.dat扩展名).我无法让编译库看到这个文件.为了让事情变得更困难,我在图书馆包中做这件事.

我认为,如果在我的Android.mk文件中,我将此.dat文件复制到我的应用程序的资源文件夹,然后从应用程序中访问它,但我觉得必须有更好的方法.

有什么建议?

android android-ndk

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