我正在使用MPMoviePlayerController播放一些视频,我得到图像,但是一旦我尝试在没有耳机的情况下播放声音,音量控制就会随着动画而消失.如果我插入耳机或某些外部扬声器,音量控制将返回动画.
该应用程序已经通过iPad iOS 3.2进行了测试并且运行良好,也可以使用iPod touch 2G iOS 3.0并且工作正常,但问题在于iPhone 4和iOS 4.1.
我正在开发一个iPhone应用程序,我正试图将视图推入导航控制器,我之前做了很多次,但是,我对这个特定的应用程序有一些问题.我有一个表视图,当用户选择一行时,新视图被推入控制器:
DataWrapper *row=[[self.rows objectAtIndex:[indexPath section]] objectAtIndex:[indexPath row]];
DataViewController *nextController=[[DataViewController alloc] initWithNibName:@"Data" bundle:[NSBundle mainBundle]];
[nextController setInfo:row];
[nextController setRow:[indexPath row]];
[nextController setParent:self];
[self.navigationController pushViewController:nextController animated:YES];
[nextController release];
Run Code Online (Sandbox Code Playgroud)
它很顺利,直到用户点击后退按钮,我得到一个例外,并使用NSZombieEnabled得到这个:
-[DataViewController respondsToSelector:]: message sent to deallocated instance 0x4637a00
Run Code Online (Sandbox Code Playgroud)
所以我试图删除[nextController release],事实上它工作,但为什么???? 我分配了nextController,所以我应该发布它,对吧?如果有类似这样的东西,我觉得发布这个应用程序是不对的,我觉得它会失败.请让我知道你的想法.
当您观看视频MPMoviePlayerController并且用户按下顶部按钮以锁定屏幕时,应用程序将进入睡眠状态,视频中的声音也会进入休眠状态.
有没有办法阻止锁定停止声音?如果没有,有没有办法拦截锁定,创建一个"自定义锁定",以节省一些电池,但继续播放视频?
我在我的iPhone应用程序中使用Sqlite3,我显然是随机获得一些不需要的回滚,但是我不知道这是否与我没有最终确定语句的事实有关sqlite3_finalize,因为到目前为止据我所知sqlite3_exec,照顾它.
另外我发现了一些sqlite3_prepare_v2我没有最终确定的SELECT ,所以我知道我必须完成这些,但是我应该对它们做同样的事情sqlite3_exec吗?
我的陈述的一个例子是:
NSString *query=@"UPDATE books SET title='newName' WHERE id='21';";
if ((result=sqlite3_open([database UTF8String], &_database))==SQLITE_OK) {
result=sqlite3_exec(_database, [query UTF8String],NULL,NULL,&errorMsg);
if (result!=SQLITE_OK) {
printf("\n%s",errorMsg);
sqlite3_free(errorMsg);
}
sqlite3_close(_database);
}
Run Code Online (Sandbox Code Playgroud)
sqlite3_finalize(result)关闭数据库之前我应该吗?
我是一个客观的新手,我在内存管理方面遇到了一些问题,我已经阅读了苹果的内存管理政策,但是我需要在这里澄清一下,我猜这很简单,但我会想问你我是不对的:
鉴于此属性:
@interface Test : NSObject {
NSArray *property1;
}
@property (nonatomic,retain) NSArray* property1;
@end
...
//And its implementation:
@implementation Test
@synthetize property1;
-(id) init {
if (self=[super init]) {
self.property1=[[[NSArray alloc] initWithCapacity:5] autorelease];
}
return self;
}
-(void) dealloc {
[super dealloc];
[property1 release];
}
Run Code Online (Sandbox Code Playgroud)
@结束
在init方法中向分配的对象发出一个Autorelease消息是正确的吗?我在apple的文档中这样做,说开发者应该释放每个分配的对象,然后,我认为,alloc sets retain count为1,然后属性(非原子,保留)加1,所以retain == 2,然后自动释放子1,当调用dealloc方法时,property1被释放并保留count == 0,我是对的吗?