小编Cen*_*ion的帖子

iOS:UITabBarController - 项目视图的延迟加载

我已经读过,对UITabBarController进行子类化是一种非推荐的做法.但是,如何实现延迟加载标签栏项目的视图?

我正在玩一个标准的应用程序视图层次结构:在我的主应用程序委托文件(application:didFinishLaunchingWithOptions :)中,我正在实例化一个UITabBarController的自定义子类,带有4个标签栏项目/图标.我只需要加载第一个标签栏项的第一个视图 - 其他视图应该根据请求延迟加载.所以,在application:didFinishLaunchingWithOptions:中,我正在加载欢迎视图并将其推送到第一个UINavigationController(1).其他标签栏项为空UINavigationControllers - (2,3,4).这是我的UITabBarController的自定义子类,也是他自己的删除:

@interface MainUITabBarController : UITabBarController <UITabBarControllerDelegate> {
}
@end

@implementation MainUITabBarController
-(void)tabBar:(UITabBar *)tabBar didSelectItem:(UITabBarItem *)item{
   UIImageView *image = [[[UIImageView alloc] initWithImage:[UIImage imageNamed:@"TableViewBG.jpg"]] autorelease];
   UIViewController *vc = [self.viewControllers objectAtIndex:item.tag];
   vc.view = image;
}
@end
Run Code Online (Sandbox Code Playgroud)

目前,第二个标签栏项的视图只是一个UIViewController,但我很快就会成为UINavigationController :)

那么,回到问题,还有什么其他(更多苹果投诉)选项来实现延迟加载的标签栏项目操作处理?

lazy-loading objective-c uitabbarcontroller ios

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

如何制作NSString宏?

如何创建一个表示常量NSString值的宏?在Xcode 4中定义时,我得到"多字符字符常量"和"字符常量太长的类型"警告:

#define LEVELTYPEGLASS @"Glass"
Run Code Online (Sandbox Code Playgroud)

我需要逃避什么吗?

macros objective-c nsstring xcode4

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

在iOS中实施多任务处理时,Grand Central Dispatch的作用是什么?

在涉及多任务实现时,我有点混淆这两个概念.我读到GCD有效地使用了所有设备核心,并且通过以更简单的方式使他们的应用程序成为多线程来促进应用程序开发人员的工作.

那么我想出的问题是,GCD Apple是实施多任务处理的首选方式吗?如果没有GCD,多任务处理与GCD的多任务处理有何不同?

iphone objective-c multitasking grand-central-dispatch

5
推荐指数
0
解决办法
269
查看次数

是否可以仅使用区域监测+ GSM并获得不超过5公里的水平精度?

我想分享我执行的测试方案的信息,并要求您分享您在区域监控方面的经验.所以,我已经注册了两个相对的区域(A和B),半径为5公里,距离为1公里,距离为20公里.但是,从A到B旅行时,我没有收到任何didEnterRegion/didExitRegion事件.在我的app原型中,我还放了两个按钮(用于测试目的):一个开始重大更改,另一个标准位置监控.两个打印都在屏幕上记录了UpdateToLocation事件.

因此,在到达B区中心并对不可预测的功能非常恼火之后,我已经启用了重要的监控.之后,我收到了几个didUpdateToLocation,horizo​​ntalAccuracy为~8.5 km!哇,这很痛,因为我想做的就是有一个功能,用户会收到通知,他想要的地方是距他当前位置5公里半径的某个地方,我想依靠GSM单元三角形位置仅检测方法(用于保存电池).

所以,回到我的情况.在得到如此大的8公里误差后,我已经启用了具有最佳精度(GPS)的标准监控.和宾果游戏,我收到了水平准确度为399米的didUpdateToLocation事件,只有这样,我才从我的初始位置(区域A)接收到didExitRegion,并使用didEnterRegion(B)接收了另一个事件.另一个来自didUpdateToLocation的更新更准确--50米.

在以前的场景中,我的准确性也不稳定.有时水平精度有4公里,有时甚至更少.但主要的问题是,如果我们想要保留电池(Apple在文档中教我们)那么我们是否可以仅使用区域监控+ GSM而不使用GPS?有一个Apple代码示例"正确使用区域监控"(这里),但有一些不可接受的事情:

1)他们声明示例代码仅适用于iPhone4,但Apple文档声明iOS4.0 +支持区域监控和重要监控.很酷,哈?

2)示例代码使用所有3种定位方法:重要,标准,区域.它始终使用区域监控,但另外在使用标准位置时具有最佳精度.当应用程序进入后台时,它会停止标准并开始重大变更监控 当进入前景时,app停止显着并开始标准位置.似乎苹果文档非常模糊,如果我们只使用区域监控,或者我们总是使用所有三种方法,我们不清楚会得到什么惩罚(horizo​​ntalAccuracy)?

3)Apple文档声明我们需要保留电池并将其用作我们需要的最小位置服务,如果我们不需要GPS,那么我们应该使用GSM(例如,所需精度为1 - 3 km).但是示例代码使用最佳期望精度(GPS)进行区域监控和标准监控(当应用程序处于前台时).我确实理解GPS可以解决我的所有错误和准确性问题,但是仅使用GSM呢?在我的方案中获得8.5公里水平精度之后,我不确定是否可以使用区域监控,因为它无法提供至少5公里的可接受误差.

iphone objective-c core-location region

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

如何为私有方法做出前瞻性声明?

我在实现中使用#pragma mark将我的方法安排到组中.但有时候,方法实现代码会出现在调用此方法的代码下面,而且我会收到"找不到实例方法"的警告.它发生在我使用私有方法时.如何解决?

iphone objective-c forward-declaration

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

浏览器如何知道在请求时将哪些cookie发送到服务器?

我知道Cookie的工作原理,刚刚开始研究为什么Codeigniter不会将生成的csrf令牌存储在SESSION中,而只是存储在cookie中。关于安全性,我开始考虑php setcookie()函数参数,例如路径和域。我问自己,是否可以通过另一个域(例如“ www.evilsite.com”)中的path =“ /”和domain =“ www.goodsite.com”来设置“ evil_cookie”?另一个问题是,执行对“ www.goodsite.com”的请求时,是否会将“ evil_cookie”发送到“ www.goodsite.com”?

所以,我做了一个测试。我创建了“ set_cookie.php”文件并将其上传到一些“ www.evilsite.com”:

setcookie('evil_cookie', 'gotcha', time() + 60 * 30, '/', 'www.goodsite.com');
Run Code Online (Sandbox Code Playgroud)

我使用Firefox和Firebug + Cookie插件查看发送和接收的Cookie。因此,在请求“ www.evilsite.com/set_cookie.php”后,我确实收到了“ evil_cookie”。但是,该cookie没有保存(至少在firebug cookie插件面板中查看时没有这样的cookie)。再次请求“ www.evilsite.com/set_cookie.php”时,也不会发送该消息。刚收到但未保存。

从Firefox浏览器的角度来看,仅将Cookie保存为当前域是合乎逻辑且安全的。恕我直言,那些设置cookie()参数(例如路径和域)的对象主要是用于管理当前域及其子域的cookie,但不适用于外部域。我有点不高兴,无法在php.net上找到相关信息,所以我不确定这是与浏览器相关的行为以及它如何处理“第三方Cookie”的细节,还是更标准?所有浏览器的行为都一样吗?如果有任何可靠可靠的声明来源,请分享。

这也与cookie的另一种用法有关-存储会话数据(不使用PHP本机会话,例如Codeigniter这样做)。因此,如果所有浏览器都不允许使用当前域以外的其他安全cookie,那就可以了。但是,它不能免受CSRF的攻击,因为“ www.evilsite.com”可能包含邪恶的javascript代码,当用户执行并从“ www.evilsite.com”获得请求时,该代码将直接在客户端上创建“ evil_cookie”。

javascript php security cookies csrf

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

应用程序是否应启动位置跟踪以从CLLocationManager获取任何最后已知位置?

目前,开发一个需要从CLLocationManager获取最后位置的应用程序(没有任何常规跟踪).无论多大,准确无关紧要.我不需要并且想要开始跟踪 - 我只需要从缓存中获取最后一个位置就是这样.恕我直言,CLLocationManager是iOS中的共享组件,如果某个应用程序使用位置跟踪,则另一个应用程序应该能够使用CLLocationManager.location中的最新位置.只要分配/初始化CLLocationManager并获取其位置就足够了.但事实并非如此.我已经在iPhone4上测试了 - 启动谷歌地图,看到我当前的位置,然后去了我的应用程序,但是[[CLLocationManager alloc] init]之后的位置属性为零.

更新:尝试[locationManager startUpdatingLocation]; 和[locationManager stopUpdatingLocation]; 但结果是一样的.我想,唯一的解决方案是开始定期跟踪?

UPDATE2:奇怪但在CLLocationManager的alloc/init之后没有"应用程序想要使用位置服务"的警报.这是我的代码片段:

CLLocationManager *locationManager = [[CLLocationManager alloc] init];

[locationManager startUpdatingLocation];
[locationManager stopUpdatingLocation];
NSLog(@"%@", locationManager.location); //prints nil
Run Code Online (Sandbox Code Playgroud)

iphone location objective-c cllocationmanager

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

如何使NSManagedObject NSString属性与"复制"而不是"保留"?

默认情况下,从数据模型创建NSManagedObject子类文件时,Core Data会为字符串类型列创建类型为NSString(nonatomic,retain)的属性.我可能会因性能考虑而完成,但是,我正在实现Data Mapper模式,其中核心数据NSManagedObject子类与模型类分离.因此,在将模型类转换为Core数据NSManagedObject子类时,retain只分配指针而不是副本.从架构的角度来看,它制动核心数据访问和模型类之间的逻辑分离,因此我需要使用copy而不是retain.

是否唯一的方法是手动更改NSManagedObject子类中的属性?

iphone core-data objective-c

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

如何从Json中使用grep检索单个值?

如何从给定的json中提取单个值?

{
  "Vpc": {
    "InstanceTenancy": "default", 
    "State": "pending", 
    "VpcId": "vpc-123", 
    "CidrBlock": "10.0.0.0/16", 
    "DhcpOptionsId": "dopt-123"
  }
}
Run Code Online (Sandbox Code Playgroud)

试过这个,但没有运气:

grep -e '(?<="VpcId": ")[^"]*'
Run Code Online (Sandbox Code Playgroud)

shell grep

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

Xib方法是否会因为情节提要而在不久的将来过时?

我知道这个话题很热门,对此有很多讨论,但是,即使最低部署目标是iOS5,我们仍会在应用程序中使用xib(很快就会降级到iOS6)。我们已经浏览并阅读了很多有关情节提要的文章,看来苹果公司正在将这种方法作为制作UI东西的首选方法,但是我们看不到使用这种“玩具”工具的真正好处。对于相对较小的一个开发人员项目应用程序,情节提要板可能比较方便,但是,在多个大型开发项目中并没有真正的好处,因为合并git / svn情节提要之间的冲突令人不胜其烦,因此,必须将stoyboard分成模块,甚至可能只包含一个屏幕,因此在这种情况下,它与Xib方法非常相似。同样,中型和大型应用程序的导航顺序有些复杂。

到目前为止,我仅看到一个好处-在一个地方可视化屏幕和导航。是的,在使用Xibs时我们没有这样的导航流程,但是,您可以使用任何UML建模工具(例如,Astah社区免费版本工具)来为此绘制UML屏幕导航计划图,仅此而已。所有的UI都可以方便地分解为Xibs,并且很容易直接从代码中加载和添加它们。即使我们开始开发相对较小的应用程序,它的大小也会(以后)会增加,因此在开始时使用灵活的Xibs会在以后阻止您采取其他解决方法。

因此,这些是我的想法和观察,我想听听开发人员开发的其他应用程序的其他意见,这些应用程序具有故事板,并且看到了哪些专业人士。我最大的担心是苹果将弃用Xibs,因为我们正在启动一个可能持续2年甚至更多年的新大型项目,因此即使使用方便且首选的UI方式,也不愿使用在不久的将来将弃用的方法。东西。

cocoa-touch xib ios uistoryboard

4
推荐指数
1
解决办法
1127
查看次数