我的应用程序仅支持横向右侧方向.
我正在尝试转换到视图控制器的视图,但是当它执行过渡动画(例如卷曲)时,视图旋转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文件并转换到该视图(想想可能在初始化和转换之间过于接近)但是同样的事情发生了.
在开发人员文档中,它说:
如果您的应用程序或线程长寿并且可能生成大量自动释放的对象,则应定期排空并创建自动释放池(如主线程上的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是最好的,但想知道我应该采用不同的方式做到这一点.谢谢!
我有一个我正在创建的NDK库,需要包含和访问二进制数据文件(.dat扩展名).我无法让编译库看到这个文件.为了让事情变得更困难,我在图书馆包中做这件事.
我认为,如果在我的Android.mk文件中,我将此.dat文件复制到我的应用程序的资源文件夹,然后从应用程序中访问它,但我觉得必须有更好的方法.
有什么建议?
objective-c ×2
android ×1
android-ndk ×1
animation ×1
autorelease ×1
iphone ×1
transition ×1
uiview ×1