小编sam*_*tte的帖子

Core Data的NSPrivateQueueConcurrencyType和线程之间共享对象

iOS 5引入了一种新方法,通过初始化MOC NSPrivateQueueConcurrencyType然后进行提取来快速获取后台线程上的数据performBlock:

Core Data的一个经验法则是您无法在线程/队列之间共享托管对象.它仍然是这样performBlock:吗?以下是:

[context performBlock:^{
    // fetch request code

    NSArray *results = [context executeFetchRequest:request error:nil];

    dispatch_async(dispatch_get_main_queue(), ^(void) {
        Class *firstObject = [results objectAtIndex:0];
        // do something with firstObject
    });
}];
Run Code Online (Sandbox Code Playgroud)

因为我在bg队列和主队列之间共享我的结果数组/对象,所以还是不可接受的?我是否仍需要使用托管对象ID来执行此操作?

iphone concurrency core-data ios5

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

服务器响应在中途被切断

我有一个返回json响应的REST API.有时(以及似乎完全随机的),json响应会在中途被切断.所以返回的json字符串如下所示:

...route_short_name":"135","route_long_name":"Secte // end of response
Run Code Online (Sandbox Code Playgroud)

我很确定这不是编码问题,因为截止点会不断改变位置,具体取决于返回的json字符串.我没有找到一个特定的响应大小,要么发生切断(我看到65kb没有切断,而40kbs会).

在切断确实发生时查看响应头:

{
    "Cache-Control" = "must-revalidate, private, max-age=0";
    Connection = "keep-alive";
    "Content-Type" = "application/json; charset=utf-8";
    Date = "Fri, 11 May 2012 19:58:36 GMT";
    Etag = "\"f36e55529c131f9c043b01e965e5f291\"";
    Server = "nginx/1.0.14";
    "Transfer-Encoding" = Identity;
    "X-Rack-Cache" = miss;
    "X-Runtime" = "0.739158";
    "X-UA-Compatible" = "IE=Edge,chrome=1";
}
Run Code Online (Sandbox Code Playgroud)

也不响铃.任何人?

rest json response

36
推荐指数
3
解决办法
3万
查看次数

重复之前的CAKeyframeAnimation延迟

我有一个CAKeyframeAnimation动画,我想永远重复使用repeatCount = HUGE_VALF.动画的持续时间是2秒,但我想在每个周期之前暂停3秒.

我能想到的唯一两种方法是:

  1. 使整个动画持续5秒,并添加额外的keyTimes和值,以便在5s动画的最后3s中获得我正在寻找的暂停.这感觉有点哈哈.

  2. 让动画只重复一次然后添加使用类似于performSelector:afterDelay:2再次运行动画,等等.这也很脏.也意味着我需要addAnimation:每5秒调用一次,我不确定它在性能方面是否是最佳的.

还有其他选择我可能会失踪吗?这两种方法中哪一种比另一种更好?

iphone core-animation core-graphics ios

34
推荐指数
2
解决办法
9343
查看次数

如何在Google地图上添加3d对象作为标记,就像Uber一样

我想在Uber上添加一个用于在地图上显示汽车的3D标记,但我无法找到有关在Google Maps SDK for iOS上添加3d对象的任何信息.

非常感谢任何帮助.

显然没有人看到OP和我看到的是什么,所以这里有一部Uber汽车转向90度的视频.逐帧播放,你会发现它不是一个简单的图像旋转.要么优步经历了每辆车的360度角度的麻烦,要么它真的是一个3D模型.对每辆车做360度图像对我来说都是愚蠢的.

google-maps ios google-maps-sdk-ios swift

33
推荐指数
3
解决办法
6836
查看次数

UIImage解压缩导致滚动滞后

我有这个应用程序与全屏tableView显示一堆微小的图像.这些图像从Web中提取,在后台线程上处理,然后使用以下内容保存到磁盘:

dispatch_async(dispatch_get_global_queue(DISPATCH_QUEUE_PRIORITY_DEFAULT, 0), ^{
    UIGraphicsBeginImageContextWithOptions(rect.size, YES, 0);
    // code that adds some glosses, shadows, etc 
    UIImage *output = UIGraphicsGetImageFromCurrentImageContext();

    NSData* cacheData = UIImagePNGRepresentation(output);
    [cacheData writeToFile:thumbPath atomically:YES];

    dispatch_async(dispatch_get_main_queue(), ^{
        self.image = output; // refreshes the cell using KVO
    });
});
Run Code Online (Sandbox Code Playgroud)

此代码仅在第一次显示单元格时执行(之后图像已经在磁盘上).在这种情况下,使用以下方式加载单元格:

dispatch_async(dispatch_get_global_queue(DISPATCH_QUEUE_PRIORITY_DEFAULT, 0), ^{
    UIImage *savedImage = [UIImage imageWithContentsOfFile:thumbPath];

    if(savedImage) {
        dispatch_async(dispatch_get_main_queue(), ^{
            self.image = savedImage; // refreshes the cell using KVO
        });
    }
});
Run Code Online (Sandbox Code Playgroud)

我的问题是,在第一种情况下,滚动是黄油平滑.但在第二种情况下(它直接从磁盘读取图像),即使加载图像,滚动也是超级生涩.绘图是造成滞后的因素.使用仪器,我看copyImageBlockSetPNG,png_read_nowinflate占用了大部分的CPU(他们不分配时self.imageUIGraphicsGetImageFromCurrentImageContext())

我假设发生了这种情况,因为在第一种情况下,UIImage是绘图的原始输出,而在第二种情况下,它必须在每次绘制时解压缩PNG.我尝试使用JPG而不是PNG,我得到了类似的结果.

有没有办法来解决这个问题?也许是为了让它只在第一次被绘制时解压缩PNG?

iphone core-graphics ios

29
推荐指数
3
解决办法
5842
查看次数

显示没有动画的键盘

看着,UIKeyboardAnimationDurationUserInfoKey但我无法找到任何地方如何将其设置为自定义值.

iphone keyboard

21
推荐指数
4
解决办法
2万
查看次数

如何使用heroku gem重新启动Heroku worker

我正在努力寻找如何调用等效的(取自本文):

heroku restart worker.1
Run Code Online (Sandbox Code Playgroud)

使用heroku宝石.我看到有restartps_restart方法,但没有看到我可以指定只重新启动这个1工人而不是整个应用程序.

heroku

21
推荐指数
3
解决办法
1万
查看次数

iOS 4阻止并保留计数

我刚刚开始使用积木和Grand Central Dispatch.我被告知(并在Apple文档中阅读)任何块中引用的对象都会被保留.

例如:

^{  
    self.layer.transform = CATransform3DScale(CATransform3DMakeTranslation(0, 0, 0), 1, 1, 1);
    self.layer.opacity = 1;
}
Run Code Online (Sandbox Code Playgroud)

"自我"得到保留,因此泄漏.为了避免这种情况,我需要将self分配给:

__block Object *blockSelf = self;
Run Code Online (Sandbox Code Playgroud)

然后使用blockSelf而不是self在我的块中.

我的问题是:当你的块有更多的代码并引用几个对象时会发生什么?我需要将它们全部分配给__block对象吗?例如:

^{  
    [self doSomething];

    NSPredicate *predicate = [NSPredicate predicateWithFormat:@"prevName == %@", artistName];
    [request setEntity:entity];
    [request setPredicate:predicate];

    Object *newObject = [[Object alloc] init];
    [someArray addObject];
    [newObject release];
}
Run Code Online (Sandbox Code Playgroud)

iphone memory-management retain ios4 objective-c-blocks

19
推荐指数
1
解决办法
8958
查看次数

在Facebook iOS 7应用程序中获得漂亮,黑暗的UIToolbar模糊效果

有谁知道Facebook用于模糊工具栏的内容?

在此输入图像描述

现在,我知道有关iOS 7模糊的无数线程.他们都来到这些相同的解决方案:

  1. 使用半透明设置为YES的UIToolbar,然后设置其barTintColor属性.这种方法的问题在于它显着增加了颜色的亮度.这是AMBlurView使用的方法.Facebook应用程序中的导航栏即使在白色内容之上也保持深蓝色.(用AMBlurView它变成淡蓝色)
  2. 在图形上下文中渲染基础视图,然后模糊该上下文,将其输出为UIImage并将其用作背景视图,每秒重复30次.(这会伤害表现非常糟糕).这是FXBlurView使用的方法.似乎Facebook也没有使用它.

我已经在Apple Dev论坛上详细阅读过,看起来这对于Apple工程师来说也是一项技术挑战.Facebook将实时模糊与我所描述的两种方法相结合.任何的想法?

user-interface facebook objective-c uitoolbar ios

19
推荐指数
1
解决办法
1万
查看次数

Google Maps Javascript API Retina Polylines?

对于我的生活,我在谷歌上找不到任何关于此的内容.Google Maps Javascript API 3.0拥有漂亮的Retina图块,但在其上呈现的任何折线看起来都很糟糕.想知道Google中是否有人拥有Retina屏幕.有关使Polylines在Retina上看起来很好的任何已知解决方法?

google-maps

15
推荐指数
1
解决办法
346
查看次数