我正在使用调度队列来管理一系列后台任务(根据用户的需求下载多个文件,而无需在UI中等待),到目前为止它工作得很好.更重要的是,我需要执行未完成的任务,例如,如果没有网络可达性,或应用程序崩溃,或手机电池耗尽,下次应用程序运行时,所有任务将自动恢复.
我打算让每个任务块在核心数据上下文中保存任务,并在任务完成后将其删除,并且我还需要在应用程序启动时执行检查,看看是否有任务要做.
创建此类应用程序的最佳做法是什么?是否有可以重复使用的示例,教程或库?
我在我的应用程序中使用AFNetworking,并尝试通过使用缓存数据(如果可用)使其在脱机模式下工作.
我预计在将请求缓存策略设置为NSURLRequestReturnCacheDataDontLoad之后,getPath:parameters:success:failure:在脱机时将使用缓存数据成功.但是,即使缓存中有数据(我通过使用代码检查缓存进行验证),getPath也会在飞行模式下失败.
AFNetworking github中有一个帖子:https://github.com/AFNetworking/AFNetworking/issues/378 但似乎根本没有解决这个问题.AFNetworking的作者只是简单地指出Apple的文件,它说:
NSURLRequestReturnCacheDataDontLoad指定应使用现有缓存数据来满足请求,无论其年龄或到期日期如何.如果缓存中没有与URL加载请求相对应的现有数据,则不会尝试从原始源加载数据,并且认为加载失败.此常量指定类似于"脱机"模式的行为.
正如Apple所说,NSURLRequestReturnCacheDataDontLoad完全是为离线模式设计的.
我在iOS6中测试,我用NSURLCache和SDURLCache测试,都有相同的结果.
请求失败,错误消息:
2012-12-22 03:11:18.988 Testapp [43692:907]错误:错误域= NSURLErrorDomain代码= -1009"Internet连接似乎处于脱机状态." UserInfo = 0x211b87c0 {NSErrorFailingURLStringKey = http://Testapp.com/api/v1/photo/latest/,NSErrorFailingURLKey = http://Testapp.com/api/v1/photo/latest/,NSLocalizedDescription = Internet连接似乎是离线.,NSUnderlyingError = 0x211b9720"Internet连接似乎处于脱机状态."}
在我们的项目中,我们正在使用一些django可重用的应用程序,我们正在考虑如何使连续和自动部署轻松,轻松.
我们有两个选择:
选项#1:使用"pip install xxx"安装所有依赖项可重用的应用程序.编写脚本来安装和检查依赖项.
选项#2:在我们自己的目录下复制所有使用过的可重用应用程序,因此我们基本上将在项目目录中部署所有内容.
两种选择都有其优点和缺点,我想知道你是否可以分享你这样做的最佳做法?
在iOS中保存UIImage
为JPEG,我使用UIImageJPEGRepresentation
,但它不采取压缩率以外的选项.我希望保存UIImage
到progressive JPEG
格式,有一个简单的方法吗?
在OS X中看起来有一个NSImageProgressive
选项可以保存NSImage
为渐进格式.
说我有2种:
class Account(db.Model):
name = db.StringProperty()
create_time = db.DataTimeProperty()
last_login = db.DateTimeProperty()
last_update = db.DataTimeProperty()
class Relationship(db.Model)
owner = db.ReferenceProperty(Account)
target = db.ReferenceProperty(Account)
type = db.IntegerProperty()
Run Code Online (Sandbox Code Playgroud)
我想得到以下查询的等价:
SELECT target
FROM Relationship
WHERE owner = :key AND type = :type
ORDERBY target.last_login DESC
Run Code Online (Sandbox Code Playgroud)
怎么做?
参考:http://www.mail-archive.com/google-appengine@googlegroups.com/msg15878.html
ALAssetsLibrary类中有2个"writeImageToSavedPhotosAlbum"方法:
- (void)writeImageToSavedPhotosAlbum:(CGImageRef)imageRef
metadata:(NSDictionary *)metadata
completionBlock:(ALAssetsLibraryWriteImageCompletionBlock)completionBlock
Run Code Online (Sandbox Code Playgroud)
(适用于iOS 4.1+)
- (void)writeImageToSavedPhotosAlbum:(CGImageRef)imageRef
orientation:(ALAssetOrientation)orientation
completionBlock:(ALAssetsLibraryWriteImageCompletionBlock)completionBlock
Run Code Online (Sandbox Code Playgroud)
(适用于iOS 4.0+)
我在我的代码中使用第一个(需要iOS 4.1),它将在iOS 4.0设备上崩溃.我试图用来respondsToSelector
检查支持哪种方法,但看起来像选择器只检查方法名称,而不是参数.
我读了一些建议,觉得纯粹检查操作系统版本可能不太好,所以有什么类似于respondstoselector可以帮我解决这个问题吗?
我在XCode 4中获得了来自ASIHttpRequest的报告内存泄漏的工具......我无法弄清楚问题,转而我们注释掉了我的所有代码来处理结果并使得函数如下所示,但xcode仍然报告相同的内存泄漏......
每次单击按钮时都会调用此方法,每次按下按钮时都会发生更多内存泄漏.:(
- (void) loadData
{
// no data set, we need to load ourself
NSURL *url = [self getDataUrl];
ASIHTTPRequest *request = [ASIHTTPRequest requestWithURL:url];
////////////////////////////////////////////////////////////////////
// set cache policy
//
// always store data in cache
[request setCacheStoragePolicy:ASICachePermanentlyCacheStoragePolicy];
// Always ask the server if there is new content available,
// If the request fails, use data from the cache even if it should have expired.
[request setCachePolicy:ASIAskServerIfModifiedWhenStaleCachePolicy|ASIFallbackToCacheIfLoadFailsCachePolicy];
[request setCompletionBlock:^{
NSLog(@"[http request] finishing %@", url);
[self dataDidLoadSuccess];
}];
[request …
Run Code Online (Sandbox Code Playgroud) ios ×4
iphone ×4
objective-c ×3
afnetworking ×1
core-data ×1
deployment ×1
django ×1
gql ×1
ios5 ×1
join ×1
jpeg ×1
memory-leaks ×1
reusability ×1
uiimage ×1
xcode4 ×1