小编Vaz*_*zyb的帖子

在iOS后台进行连续加速度计更新

在提出问题之前,我已经彻底研究了这个主题,但需要确保我得出了正确的结论,如果有的话,我希望尽可能有效地帮助实现这个问题.

这是必不可少的我的应用程序接收加速更新,每5秒左右,并且可以更迅速地在某些情况下,没有这个功能,它不是一个非常有用的应用程序.

那么,如何实现这一目标呢?基本策略是使用该方法:

[cmMotionManager startDeviceMotionUpdatesToQueue:...] 
Run Code Online (Sandbox Code Playgroud)

用一个合适的deviceMotionUpdateInterval,然后以某种方式'确保'你的应用程序永远不会被暂停,即.你必须实现一种背景模式(例如位置,背景音频,VOIP等)

这是应用程序商店中已有的许多应用程序使用的策略,如Sleep Cycle("录音"),Nike +和Pacer(声音播放).

(如果有另一种方法可以连续获取加速度计信息,请纠正我)

我的问题是我的应用程序不会录制声音,不需要VOIP等,并且不需要在iOS 7中使用任何新的后台提取/远程通知API.那么如何确保我保持活跃在背景?

好吧,因为我正在设计一个测量运动的应用程序,它不是一个很长的接收位置信息.我的问题是如何以最有效的方式实现位置更新,因为我确实不需要这些位置更新,同时确保我的应用程序永远不会被暂停?

这就是我现在在我的app委托中所拥有的:

self.locationManager = [[CLLocationManager alloc] init];
self.locationManager.desiredAccuracy = kCLLocationAccuracyKilometer;

- (void)applicationWillResignActive:(UIApplication *)application
{
    [self.locationManager startUpdatingLocation];
}

- (void)applicationWillEnterForeground:(UIApplication *)application
{
    [self.locationManager stopUpdatingLocation];
}
Run Code Online (Sandbox Code Playgroud)

我注意到有时在我按下应用程序上的主页按钮后不久,我的应用程序就会被暂停 - 可能是因为Core Location试图获得一个位置修复程序以交付给应用程序.

我还想知道,一旦你被一个位置更新唤醒,如果新的位置更新没有到达,你在系统再次暂停之​​前有多长时间了?我是否必须尝试接收连续的位置更新(导航样式)以确保我永远不会被暂停?

请帮忙!

谢谢

accelerometer core-location ios core-motion

18
推荐指数
1
解决办法
6053
查看次数

UIImageView vs UIView w/Image - 效率

这不是一个关于解决特定问题的问题,而是更多要求指向正确方向的问题.

我正在制作一个应用程序,我同时将几个图像(保存为JPG)加载到屏幕上,这必须是它的方式,我无法卸载其中任何一个因为它们都被立即显示.

我尝试以大约800px*600px的分辨率天真地加载30张图像,认为它只将图片的"压缩"大小加载到内存中(大约200 KB) - 所以总共6 MB?当然,后来有几次记忆警告,我意识到我是多么愚蠢.所以我现在将它们的大小调整到大约400px*300px,而我的iPhone 4S只是为了应对内存需求.

我最初使用的是UiView,在drawRect中我绘制了一个自定义绘制的图像,但转换到使用UIImageView显着改善了这种情况.该应用程序更快,响应更快.我还发现在我的图层中关闭光栅化会对性能产生巨大影响.

这些"发现"需要花费数小时才能完成,而我想知道的是,是否有特定的设计模式或资源可用于尽可能高效地将图像加载到屏幕上; 主要是关于使用尽可能少的内存 - 是否有良好的经验法则?为什么使用UIImageView vs UiView w/image会产生这样的差异?

如果有人可以提供帮助,我将非常感激.

谢谢.

iphone cocoa-touch objective-c uikit uiview

8
推荐指数
2
解决办法
3832
查看次数

UIImage在不损失质量的情况下调整大小

我正在寻找一个外部库(或使用不破坏质量的Apple框架的方法),这将让我缩小图像.

我试过这个'简单图像处理库',但它只适用于黑白 - 我不知道如何让它适用于彩色图像.(http://code.google.com/p/simple-iphone-image-processing/)

我试过Core Graphics,UIKit,"trevor"(http://vocaro.com/trevor/blog/2009/10/12/resize-a-uiimage-the-right-way/)方法 - 这使得模糊不清图像,我真的不知道我还能做什么 - 我无法继续编程我的应用程序,而不会得到至少一半体面的图像缩放工作.我认为需要插值来获得不错的结果.

鉴于iOS最近取得的进展,我真的希望有人可以帮助我.这不仅仅是我遇到的问题,很多其他人似乎也遇到了同样的问题,所以如果有人能在这里解决它,我肯定会受到广大观众的欢迎!

非常感谢你

iphone cocoa-touch core-graphics image-processing uikit

8
推荐指数
1
解决办法
6342
查看次数

Reachability Classes崩溃程序 - 不知道为什么

我有一个'互联网感知'基类,用于在我的应用程序中需要联网的对象.需要互联网认知的所有对象都从中继承.你可以想象我分配和释放了很多这些对象.

Internet感知基类具有以下代码,用于与用于检查Internet状态的Reachability类进行交互.

#import "Reachability.h"

- (id) init {
    ...
    self.internetReachable = [Reachability reachabilityForInternetConnection];
    [[NSNotificationCenter defaultCenter] addObserver:self selector:@selector(checkNetworkStatus) name:kReachabilityChangedNotification object:nil];
    [self.internetReachable startNotifier];
    ...
  }
- (void)  dealloc
 {
    [self.internetReachable stopNotifier];
    [[NSNotificationCenter defaultCenter] removeObserver:self];
 }
Run Code Online (Sandbox Code Playgroud)

只要我的应用中的互联网状态发生变化,应用就会崩溃,并显示以下错误:

*** - [Reachability isKindOfClass:]:发送到解除分配的实例0x1e249a30的消息

我打开僵尸并将问题跟踪到Reachability.m中的以下代码行

NSCAssert([(NSObject*) info isKindOfClass: [Reachability class]], @"info was wrong class in ReachabilityCallback");
Run Code Online (Sandbox Code Playgroud)

不幸的是,除了停止侦听NSNotifcations并停止通知程序之外,我不确定我的对象还能做些什么来避免这个错误.

任何帮助或建议都会很棒.

谢谢

VB

编辑:

好的,按照下面的答案的建议,我在具有分配的工具中运行它,这是保留计数历史.

在此输入图像描述

正如我所怀疑的那样,它已被解除分配的对象被基金会(即NSNotifcationCenter)调用而不是我自己.

我的互联网对象有一个指向Reachability对象的强指针.当它们被释放时,Reachability对象也是如此.僵尸是Reachability对象.在我的互联网对象的dealloc中,我调用了removeObserver,但是基础仍在调用deallocated对象.我不明白为什么......

exc-bad-access reachability ios

5
推荐指数
2
解决办法
2983
查看次数

UICollectionView单元格布局超出了集合视图的范围

我有一个UICollectionView,它使用Flow Layout放置它的单元格.它是垂直滚动的.

它填补了屏幕分辨率320x480,显示自定义UICollectionViewCell这始终是96*96 - 大小在Interface Builder设置和委托没有实现的方法来设置为每件商品的商品尺寸.

左侧和右侧有插图,每个插图10 px,最小间距设置为6px.

因此,每条水平线有3个单元.

<-10 - > <---- ---- 96> < - 6 - > <---- ---- 96> < - 6 - > <---- ---- 96> < - 10-> = 320.

我遇到的问题是它偶尔会在一条线上放置4个单元!第四个小区大部分都在屏幕外.然后它在下一行只放置2个单元格以进行补偿.流程布局的全部要点是它是一个断线布局,不应该在屏幕外放置任何东西!

我附上了一张照片:

在此输入图像描述

请注意,在第二行,第四项主要是在屏幕外.

我真的不知道是什么原因造成的.单元格动态填充数据但其大小不变.所有其他行上的单元格都很合适,因此没有理由在某些行上发生这种情况.

每次更新集合视图时,都会在不同的位置发生此错误.即.它可能发生在第2行,然后一旦发生更新,它可能发生在第10行,依此类推.

集合视图正由计时器更新.计时器本质上调用一个处理某些数据的函数,然后使用dispatch_async(在主队列上)更新包含后备数据的数组并调用[collectionView reloadData].所以我没有从主线程以外的任何线程更新集合视图.后备阵列仅在主队列和该功能中更新; 不是来自其他地方.

请有人给我一些关于可能出错的建议.

谢谢

uikit ios uicollectionview

5
推荐指数
1
解决办法
3028
查看次数

嵌入式UINavigationController的后退按钮不起作用

我正在使用Container View控件通过界面构建​​器将a UINavigationController和它的堆栈嵌入到我的应用程序中.

我遇到的问题是后退按钮不能在Root VC上的所有推送的VC上运行.

您按下这些按下的VC上自动生成的后退按钮,没有任何反应.

编辑:

没有编写代码.它现在全部设在IB.

在此输入图像描述

如您所见...... Container View及其嵌入式视图控制器设置为UInavigation Controller.左边的空白最终将是一个可滑动的菜单 - 这就是设置的原因.然后在根RV上有一个下一个按钮,它会切换到第二个视图控制器.

在此输入图像描述

该状态如上所示.按后退按钮(标记为测试)不执行任何操作.通常它会弹出顶视图控制器并返回'测试'.很明显,嵌入会以某种方式干扰正常的UINavigiationController函数.

我只是不知道如何.

另一个编辑:

在顶部View Controller上制作自定义按钮并手动调用

   [self.navigationController popViewControllerAnimated:true];
Run Code Online (Sandbox Code Playgroud)

实际上工作和顶视图控制器从堆栈中删除.

所以问题是为什么后退按钮不起作用?

uikit uinavigationcontroller ios uicontainerview

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

多个视图控制器和一个视图笔尖

我想实现以下目标:

我有一个nib,它有一个负责该视图的View Controller.

我想编写从该视图控制器继承的类,因此与基本视图控制器共享相同的nib文件,但添加其他特定代码.我可以在基本视图控制器中构建大量功能但是它会变得混乱; 我真的希望能够使用一个nib具有相同的基本结构,然后具有添加其他功能的子类.

我遇到的麻烦是使用基类的视图实例化(在代码中)子类.

我试过[NSBundle nibWithNibName:...]和[[vc alloc] initWithNib:...] - 它们都给出了错误.

我是否将文件的所有者设置为基类?我是否为基类设置视图的自定义视图控制器?我该如何实现这一目标?

谢谢

uiviewcontroller uikit ios

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

Objective-C中的块语法问题 - 带返回类型和参数的typedef块

我有一个块:

typedef id (^completionBlock)(id data, NSURLResponse *urlResponse, NSError *error);
Run Code Online (Sandbox Code Playgroud)

在类方法中,我尝试使用一些代码填充此块.

request.requestCompletedBlock = ^(id data, NSURLResponse *urlResponse, NSError *error){
  ...
return object;
};
Run Code Online (Sandbox Code Playgroud)

requestCompletedBlock显然是completionBlock类型.

我收到以下错误:

"不兼容的块指针类型分配给'completionBlock'(又名'ID(^)(_ 强ID,NSURLResponse* _strong,NSError*__强)')从"无效*(^)(_ 强ID,NSURLResponse* _strong,NSError*__强大)'"

显然我的语法在某处错了,但在哪里?

非常感谢,

VB

objective-c objective-c-blocks

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

Health Kit 统计查询 - 是否包含来自自己来源的条目?

我发现,从 HealthKit 中获取膳食卡路里等总和将返回一个值,该值会自动减去我自己的应用程序中的条目。这很棒,也是我想要的行为,但这种情况并不总是发生 - 有时它包括我从自己的应用程序中创建的条目。这使得在不遍历每个对象的情况下无法明智地使用 HealthKit 统计查询结果。

predicate = [HKQuery predicateForSamplesWithStartDate:[date dateByAddingTimeInterval:-queryLatencyPeriod] endDate:nil options:0];

HKStatisticsQuery *sumQuery;

sumQuery = [[HKStatisticsQuery alloc] initWithQuantityType:[HKQuantityType quantityTypeForIdentifier:HKQuantityTypeIdentifierDietaryEnergyConsumed] quantitySamplePredicate:predicate options:HKStatisticsOptionCumulativeSum completionHandler:^(HKStatisticsQuery *query, HKStatistics *result, NSError *error) {
    float calories = [[result sumQuantity] doubleValueForUnit:[HKUnit calorieUnit]];
}];
Run Code Online (Sandbox Code Playgroud)

有时这包括我的应用程序的条目总数,有时则不包括。就那么简单。我认为这是 HealthKit 中的一个错误。

ios healthkit

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

使用闭区间的 Swift For 循环

我有一个for循环并想访问“当前”索引。Xcode 给了我恼人的错误。

for k in [1...map.dates.count-1]
{
    map.returns.append((map.closingPrices[k]-map.closingPrices[k-1])/map.closingPrices[k-1])
}
Run Code Online (Sandbox Code Playgroud)

所以我基本上要做的是for k in [1..10],计算返回 (ba)/a,其中 b 和 a 是某个数组 ( closingPrices)中的连续元素。

编译器对我使用k访问没有问题,closingPrices但是当我使用时它会感到不安,k-1因为 k 不是整数,它是一个CountableClosedRange<Int>.

错误说

二元运算符“-”不能应用于 CountableClosedRange 和 Int 类型。

所以 - 一个简单的问题 - 我如何重写我的代码以访问 k 的整数值并从中减去 1 而不是得到编译器错误。

integer for-loop swift

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