我正在尝试创建一个使用文件播放视频的应用AVFoundation.视频显示在通过点击父表视图中的行访问的视图中.真正的应用程序将有每行的视频,但目前我只使用一个进行测试.
当在模拟器上运行时,应用程序是可以的,但是当在设备上运行时(在ios 5.1下),视频可以播放大约5次,然后以各种方式无法预测地崩溃.最常见的是,视频视图会加载,但视频本身不会播放,但有时我会EXC_BAD_ACCESS在一个coremedia.remote线程上获取,抱怨分配的对象没有自动释放池.我添加了一个@autoreleasepool包装启动AVPlayer的代码块,但这似乎没有帮助.
我想知道发生的事情是GCD是在主队列上创建多个线程来播放项目,但它们并没有终止.
因此,关键问题是-我怎么清理多余的GCD线程AVPlayer是,如果用户点击视频视图中的后退按钮尽可能我已经按照苹果公司在提供的示例代码上运行AVFoundation的文件在这里
我有添加了一些日志记录和(如上所述)一个@autoreleasepoolGCD块内的块 - 除了我没有更改代码.
该viewDidLoad方法如下:
-(void)viewDidLoad{
[super viewDidLoad];
NSURL *fileURL = [[NSBundle mainBundle] URLForResource:@"TestLapCar2Vid" withExtension:@"m4v"];
AVURLAsset *asset = [AVURLAsset URLAssetWithURL:fileURL options:nil];
NSString *tracksKey = @"tracks";
[asset loadValuesAsynchronouslyForKeys:[NSArray arrayWithObject:tracksKey] completionHandler:
^{
dispatch_async(dispatch_get_main_queue(),
^{
@autoreleasepool {
NSError *error = nil;
AVKeyValueStatus status = [asset statusOfValueForKey:tracksKey error:&error];
if(status == AVKeyValueStatusLoaded){
avPlayerItem = [AVPlayerItem playerItemWithAsset:asset];
[avPlayerItem addObserver:self forKeyPath:@"status"
options:0 context:&ItemStatusContext];
[[NSNotificationCenter defaultCenter]addObserver:self selector:@selector(playerItemDidReachEnd:)
name:AVPlayerItemDidPlayToEndTimeNotification object:avPlayerItem]; …Run Code Online (Sandbox Code Playgroud) 我正在构建一个使用LINQ to SQL连接到SQL Server数据库的WPF应用程序.
应用程序的主窗口包含ListView一系列详细视图.所述ItemSource的ListView结合到暴露于根视图模型的属性细节视图模型的对象的集合.每个细节视图模型对象组成若干ICommand属性以及暴露细节模型对象的属性,该属性反过来暴露UI中显示的各种数据字段.
使用ANTS内存分析器进行分析表明,泄漏的对象是详细模型对象中包含的对象,以及它们绑定到的一些UI类.来自先前刷新的这些对象的实例不是垃圾收集的.
ANTS有一个工具,允许用户跟踪引用链,以确定保留不需要的内存的原因.当我使用它时,我发现所有出现的链都有一个ICommand.因此,我删除了违规行为ICommand,发现内存泄漏消失了.
不幸的是,我需要ICommand实现一些重要的功能.让我感到困惑的是它首先如何引用细节模型对象 - 它们是详细视图模型对象中两个完全独立的实例变量.
这是详细视图模型对象的构造函数(对RootViewModel的引用用于连接到ICommands的一些方法中的回调.我原先怀疑这可能导致循环引用链,这可能是导致问题,但删除它似乎没有任何影响.)
public CarDataViewModel(CarData carDataItem, RootViewModel parentViewModel)
{
_parentViewModel = parentViewModel;
CarDataModel = carDataItem;
CompetingCheckboxStatus = CarDataModel.CurrentCar.Competing;
AcknowledgeAlarm = new ParameterlessCommand(AcknowledgeAlarmClicked);
Acknowledge = new ParameterlessCommand(AcknowledgeClicked);
ShowReport = new ParameterlessCommand(ShowReportClicked);
Cancel = new ParameterlessCommand(CancelClicked);
}
Run Code Online (Sandbox Code Playgroud)
这里是设置绑定的xaml - AcknowledgeAlarm是ICommand,CarDataModel是详细模型对象:
<ListView x:Name="itemGridView"Grid.Row="1"ScrollViewer.HorizontalScrollBarVisibility="Disabled" ItemsSource="{Binding CarDataViewModels}" IsSynchronizedWithCurrentItem="True" Margin="0,0,0,0">
<ListView.ItemTemplate>
<DataTemplate>
</DataTemplate.Resources>
<Button Command="{Binding AcknowledgeAlarm}">
<Border DataContext="{Binding CarDataModel}" BorderBrush="{StaticResource GrayFadeBrush}" Background="White" BorderThickness="5">
<Grid> …Run Code Online (Sandbox Code Playgroud) 我无法强迫Core Data在我正在编写的基于文档的iOS应用程序中刷新我的一些NSManagedObject子类.
问题在于处理当前文档中存在未保存的更改时用户加载第二文档的情况此时,如果用户再次加载第一文档,则显示未保存的更改.使用NSFetchRequest为文档的根对象加载文档.此提取请求的属性-setShouldRefreshRefetchedObjects:设置为YES,并且属性
-setIncludesPendingChanges:设置为NO我确定它们未保存到持久性存储,因为终止应用程序并重新启动它会导致显示原始未更改的文档.此外,我打开了SQL调试,它显示应用程序不是第二次从相关表中获取
我必须使用SQL语句删除表,如果表不存在,它将崩溃.是否可以使用IF语句删除表
s.executeUpdate("DROP TABLE employee");
我在DBpedia上运行查询,我收到一些结果显然有错误的编码和字符显示为问号,例如 -
http://dbpedia.org/resource/Bo?aziçi_University
Run Code Online (Sandbox Code Playgroud)
- 我希望看到的地方 -
http://dbpedia.org/resource/Bo%C4%9Fazi%C3%A7i_University
Run Code Online (Sandbox Code Playgroud)
在这里你可以找到实际的标题.
你可以在那里执行我的查询 http://live.dbpedia.org/sparql
PREFIX yago: <http://dbpedia.org/class/yago/>
PREFIX schema: <http://schema.org/>
PREFIX dbpedia: <http://dbpedia.org/>
SELECT ?school
WHERE
{
{ ?school rdf:type schema:EducationalOrganization . }
UNION
{ ?school rdf:type yago:EducationalInstitution108276342 . }
UNION
{ ?school rdf:type yago:College108278169 . }
UNION
{ ?school dbpedia:type dbr:Public_university . }
}
Run Code Online (Sandbox Code Playgroud)
难道我做错了什么?我是否必须对查询进行任何添加才能获得正确的结果?它是否与数据相关(基本上数据是错误的,所以无法做任何事情)?
我目前正在使用数据结构和算法类,结果证明它非常适合链接列表的概念.不幸的是,我的教授不是解释代码的最佳人选.我搜索了许多网站,试图了解如何构建一个链表,并能够在主要调用它,但由于某种原因,它只是不坚持.据说我有以下代码,我做错了吗?如何在数据中插入数字以及如何从一个节点移动到另一个节点?如何在main中调用节点类并打印出数据值?请向我解释一下,我是一个5岁的孩子.我正在使用C++代码块.谢谢
#include <iostream>
using namespace std;
class LinkedList
{
class Node
public:
{
Node (int data, Node *n);
int data;
Node *next;
};
Node *head;
};
int main()
{
LinkedList::Node NodeObj;
NodeObj.data = 5;
cout <<NodeObj.data;
return 0;
}
Run Code Online (Sandbox Code Playgroud)