小编rge*_*rge的帖子

iOS应用程序可以在运行时读取自己的权利吗?

iOS应用程序可以在运行时发现,检查或以其他方式读取自己的权利吗?

理想情况下,我可以将我的.entitlements文件的整个(已处理)内容作为plist读取.获得应用程序标识符前缀将是可接受的第二好的.

这里的目标包括:允许应用程序使用各种应用程序标识符前缀进行签名,而无需在代码中进行匹配更改; 并且在共享钥匙串访问组存在或不存在的情况下采取不同的行动.这是库代码,因此我对客户端应用程序配置的影响越小越好.

iphone cocoa keychain ios code-signing-entitlements

22
推荐指数
3
解决办法
5277
查看次数

解析rfc3339与iOS 4.x和MacOS X 10.6中的NSDateFormatter约会:不可能?

在一般情况下,使用NSDateFormatter解析rfc3339日期似乎是不可能的.我错了吗?[编辑2年后:现在有办法!见下文和脚注.]

一个不特别具有可塑性的网络服务正在为我提供如下日期:

2009-12-31T00:00:00-06:00
Run Code Online (Sandbox Code Playgroud)

符合Rfc3339,是他们正在使用的jaxb库的默认输出.注意冒号,当偏移量不是文字"z"时,rfc3339 需要冒号:

time-numoffset  = ("+" / "-") time-hour ":" time-minute
time-offset     = "Z" / time-numoffset
Run Code Online (Sandbox Code Playgroud)

我想将这些解析为NSDates.

NSDateFormatter需要Unicode指定的语法模式,它为时区提供日期字段符号,如"PDT"," - 0800","GMT-08:00"但不是"-08:00".

谷歌搜索和其他类似的SO问题只产生日期格式

[myDateParser setDateFormat:@"yyyy'-'MM'-'dd'T'HH':'mm':'ssZ"];
/* or: */ [myDateParser setDateFormat:@"yyyy'-'MM'-'dd'T'HH':'mm':'ss'Z'"];
Run Code Online (Sandbox Code Playgroud)

后者需要字面上的"Z",前者坚持要么没有结肠,要么存在"GMT".但是,它们似乎在ios 4.x之前工作(可能完全丢弃tz偏移量;我的数据不清楚.)

我在这一点上的选择很遗憾:

  • 发现一些未记录的格式说明符,或者一些奇怪的模式来放置NSDateFormatter,它将接受流浪冒号:longshot,可能不存在.[脚注]
  • 说服我的服务发布者将所有日期转换为祖鲁时间并指定'Z':具有政治挑战性.
  • 写我自己的NSFormatter子类或研究好旧strptime_l:工作.:)
  • 字符串 - 操纵我的输入并剥去最后一个冒号:脆弱和丑陋,但可能是阻力最小的路径.

我是否准确理解了这种情况,当前的NSDateFormatter严格遵循unicode而没有扩展; 并且unicode格式不足以完全描述rfc3339的日期?

[脚注]三年后我回到这个小小的附录:Unicode和Apple已经将这个功能添加到格式字符串中,从iOS6/OSX10.8开始.比较撰写本文的最新版本与其前一版本,并注意添加5"Z",产生类似"-08:00"的区域格式.因此,如果您能够放弃对5.x/10.7的弃用支持,那么有一种新的正确方法可以做到这一点.我将离开之前的答案,因为它仍然是需要向后兼容性的最佳方法.

macos cocoa rfc3339 nsdateformatter ios

17
推荐指数
3
解决办法
6073
查看次数

Java中简单的类似数据库的集合类

问题:在java对象之间保持双向多对一关系.

像Google/Commons Collections bidi地图之类的东西,但我希望在前端允许重复值,并将前向键的集合作为反面值.使用这样的东西:

// maintaining disjoint areas on a gameboard. Location is a space on the
// gameboard; Regions refer to disjoint collections of Locations.

MagicalManyToOneMap<Location, Region> forward = // the game universe
Map<Region, <Set<Location>>> inverse = forward.getInverse(); // live, not a copy
Location parkplace = Game.chooseSomeLocation(...);
Region mine = forward.get(parkplace); // assume !null; should be O(log n)
Region other = Game.getSomeOtherRegion(...);
// moving a Location from one Region to another:
forward.put(parkplace, other);
// or …
Run Code Online (Sandbox Code Playgroud)

java database algorithm collections data-structures

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

在iPad上显示大型PDF时UIWebView泄露

这是一些奇怪的行为,我希望有人可以确认是一个已知的bug,或建议一个解决方法.

我的iPad应用程序需要显示一些大型PDF(约7mb和图形密集).阻力最小的路径当然是UIWebView,但我的应用程序在显示几个后崩溃.我在新项目中隔离了行为,并在其上运行了Instruments.

结果如下.它们似乎表明UIWebView中发生了严重泄漏.

基本代码,在最小视图控制器中:

-(IBAction)doPresent:(UIView *)sender
{
  NSURL *url = [[NSBundle mainBundle] URLForResource:[NSString stringWithFormat:@"%d", [sender tag]]
                                       withExtension:@"pdf"];
  UIWebView *wv = [[[UIWebView alloc] init] autorelease];
  UIViewController *vc = [[[UIViewController alloc] init] autorelease];
  [vc setView:wv];
  UINavigationController *holder = [[[UINavigationController alloc] initWithRootViewController:vc] autorelease];

  [self presentModalViewController:holder animated:YES];
  [wv loadRequest:[NSURLRequest requestWithURL:url]];

  UIBarButtonItem *close = [[[UIBarButtonItem alloc] initWithBarButtonSystemItem:UIBarButtonSystemItemDone
                                                                          target:self
                                                                          action:@selector(doDismiss:)] autorelease];
  [[vc navigationItem] setRightBarButtonItem:close];
}

-(IBAction)doDismiss:(id)sender
{
  [self dismissModalViewControllerAnimated:YES];
}
Run Code Online (Sandbox Code Playgroud)

没有图示:主要的笔尖包含这个VC,它的视图和连接的五个按钮doPresent:,每个标记有1 ... 5; 应用程序包中的1.pdf到5.pdf.运行它并且它可以像您期望的那样工作,除了它在PDF的六个左右视图之后崩溃.

在仪器(分配)下运行它产生了这个有趣的情节: 内存使用情节

我注意到的模式是,如果我显示PDF并在不滚动文档的情况下将其关闭,它会按预期释放,泄漏最少.但是,如果我触摸它并滚动,即使是一点点,内存也不会被释放.查看后续PDF似乎没有重用任何浪费的内存,但每个都分配了更多自己的内存.在模拟器中运行并触发内存警告也不会获得此内存.

当使用量达到〜25mb时,程序得到了kill -9'd.这对我来说似乎很低,暗示除了app内存之外还有一些其他资源被泄露.

这是在运行4.3的iPad 1上重新启动. …

pdf memory-leaks uiwebview ipad ios

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

UITableView:使用moveRowAtIndexPath:toIndexPath:和reloadRowsAtIndexPaths:withRowAnimation:一起出现损坏

我想使用iOS 5的漂亮的行移动调用来动画化表视图以匹配某些模型状态更改,而不是使用旧式的“删除并插入”。

更改可能包括重新排序和就地更新,并且我想同时对它们进行动画处理,因此需要一些行reloadRowsAtIndexPaths

但!UITableView如果更新的单元格由于移动而发生位置偏移,则在存在移动的情况下处理行重新加载时似乎完全是错误的。以等效的方式使用较旧的delete + insert调用,效果很好。

这是一些代码;我为冗长而道歉,但确实可以编译并运行。肉在doMoves:方法中。下面的说明。

#define THISWORKS

@implementation ScrambledList // extends UITableViewController
{
  NSMutableArray *model;
}

- (void)viewDidLoad
{
  [super viewDidLoad];
  model = [NSMutableArray arrayWithObjects:
           @"zero",
           @"one",
           @"two",
           @"three",
           @"four",
           nil];
  [self.navigationItem setRightBarButtonItem:[[UIBarButtonItem alloc] initWithTitle:
#ifdef THISWORKS
                                              @"\U0001F603"
#else
                                              @"\U0001F4A9"
#endif
                                                                              style:UIBarButtonItemStylePlain
                                                                             target:self
                                                                             action:@selector(doMoves:)]];
}

-(IBAction)doMoves:(id)sender
{
  int fromrow = 4, torow = 0, changedrow = 2; // 2 = its "before" position, just like the docs say.

  // some model changes …
Run Code Online (Sandbox Code Playgroud)

uitableview uikit ios ios5

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