iOS:有没有一种安全的方式在代码中包含API密钥?

Amazon拥有适用于iOS的AWS开发工具包,以及多个示例应用程序 。 在他们的示例中,他们将API凭证放在一个Constants.h文件中: // Constants used to represent your AWS Credentials. #define ACCESS_KEY_ID @"CHANGE ME" #define SECRET_KEY @"CHANGE ME" 我担心的是,这些可以由一个坚定的黑客提取。 有什么方法安全地在应用程序中包含API密钥? 我看到的一个select是包括我自己的服务器作为中介:应用程序与我的服务器通话,我的服务器与S3通信。 我可以看到这样做的价值,但仍然存在一个问题:我是否允许应用程序在我的服务器上进行API调用,而不进行任何forms的身份validation? 在应用程序中包含我自己的API密钥与包含AWS API密钥的问题相同。

通过单元格内的textView的内容更改单元格高度

我有一个名为todoTableView的表视图与用户创build的单元格。 每个单元格都有文本视图。 我想通过文本视图的内容来改变单元格的高度。 这是我试过的: func tableView(tableView: UITableView, cellForRowAtIndexPath indexPath: NSIndexPath) -> UITableViewCell { let cell: TableViewCell = tableView.dequeueReusableCellWithIdentifier("cell", forIndexPath:indexPath) as! TableViewCell cell.bounds.size.height = cell.textView.bounds.size.height return cell }

AFNetworking将JSON数组作为多个单项词典发布

我遇到了类似于这里讨论的问题 。 我试图将JSON发布到服务器。 这是应该工作的Objective-C代码,但不是。 我在响应对象中得到一个空数组,不知道为什么: AFHTTPRequestOperation * operation = [manager POST:uploadScriptUrl parameters:mutableJSON success:^(AFHTTPRequestOperation * operation, id responseObject) { successBlock(operation, responseObject); } failure:^(AFHTTPRequestOperation * operation, NSError * error) { failureBlock(operation, error); }]; 这个代码(从我用来上传图片的代码改编而来) KIND OF作品。 我知道这绝对不是批准的方式: AFHTTPRequestOperationManager * manager = [AFHTTPRequestOperationManager manager]; AFJSONRequestSerializer * requestSerializer = [AFJSONRequestSerializer serializer]; [requestSerializer setValue:@"application/json" forHTTPHeaderField:@"Content-Type"]; [requestSerializer setValue:@"application/json" forHTTPHeaderField:@"Accept"]; manager.requestSerializer = […]

NSCalendar,为什么设置第一个星期不影响计算结果?

我需要计算给定date的工作日,但是,根据日历,星期一可以星期一星期日星期日 所以我想设置它,从星期一开始,使用 [[NSCalendar currentCalendar] setFirstWeekday:2]; 但是,计算结果是一样的 { [[NSCalendar currentCalendar] setFirstWeekday:1]; NSDateComponents *weekdayComponents = [[NSCalendar currentCalendar] components:(NSDayCalendarUnit | NSWeekdayCalendarUnit) fromDate:date]; NSInteger weekday = [weekdayComponents weekday] – 1; NSLog(@"%d", weekday); } { [[NSCalendar currentCalendar] setFirstWeekday:2]; NSDateComponents *weekdayComponents = [[NSCalendar currentCalendar] components:(NSDayCalendarUnit | NSWeekdayCalendarUnit) fromDate:date]; NSInteger weekday = [weekdayComponents weekday] – 1; NSLog(@"%d", weekday); } 返回相同的数字,但是为什么?

ALAssetsLibrary似乎返回错误的我的照片数量

当我使用ALAssetsLibrary获取本地照片时,它工作正常。 但是,我删除了一些照片与'照片'应用程序我的应用程序崩溃。 崩溃信息是: "Terminating app due to uncaught exception 'NSRangeException', reason: '*** -[NSOrderedSet enumerateObjectsAtIndexes:options:usingBlock:]: index 14 beyond bounds [0 .. 9]'".'14' 看起来,本地照片的数量仍然和befoore一样。 甚至在我退出我的应用程序并重新启动后,它仍然崩溃。 本地照片访问代码: dispatch_async(dispatch_get_main_queue(), ^ { @autoreleasepool { ALAssetsLibraryAccessFailureBlock failureblock = ^(NSError *myerror) { NSLog(@"error occour =%@", [myerror localizedDescription]); }; ALAssetsGroupEnumerationResultsBlock groupEnumerAtion = ^(ALAsset *result, NSUInteger index, BOOL *stop) { if (result!=NULL) { if […]

像Objective-C一样,如何在swift中编写“valueForKey”?

NSDictionary dic; NSMutableArray array; //Objective-C Code. array = [dic valueForKey:@"Table"]; //"Table" is key in dictionary 如何在Swift中编写相同的代码?

在UIViewController被popup之后,MKMapView autorelease不会调用dealloc

我在类A中有以下代码: UIViewController *vc = [self viewControllerForItem:item]; 在我的应用程序委托viewControllerForItem方法返回一个UIViewController基于我的项目即 vc = [[[MyCustomViewController alloc] init] autorelease]; return vc; 然后我推视图控制器: [self.navigationController pushViewController:vc animated:YES]; 这个VC我试图推动一个MKMapView,我在dealloc方法插入一个日志语句,看看是否被调用。 在我的记忆中,增长速度非常快。 但是,当我推入VC后添加下面的代码: [vc release]; 我的MKMapView类调用dealloc方法。 当然,如果MKMapView类是我的应用程序委托返回的唯一类(或者我可以检查VC的类是否是我的MKMapView类),这将是一个简单的解决scheme。 不过,我想解决这个根本问题。 为什么在我的视图控制器上设置autorelease时,dealloc没有被调用? 即使在该vc上使用autorelease,我怎么可能将[vc release]添加到视图控制器? 谢谢 编辑: 这里有一些额外的信息。 我有我的应用程序委托viewControllerForItem类。 我将自动释放的对象返回到我的其他pipe理器类,然后我推视图控制器。 当我返回一个自动释放对象时,保留计数是否被搞乱了,然后把它推到其他类中? 这是当我推VC和mkmapview的didDissappear被调用时的backtrace / callstack: pushVC: ( 0 NewHampshire 0x00254cdf -[CustomViewController navigateToRowId:withLinkBehavior:animated:] + 2111 1 NewHampshire 0x002534c9 -[CustomViewController webView:shouldStartLoadWithRequest:navigationType:] + 841 […]

使用相同的代码库提交多个iOS应用程序

我正在尝试开发一个可用于生成多个应用程序的应用程序。 现在说我正在做一个应用程序的水果,但明天客户将要创build一个应用程序的蔬菜,后天为肉类,等等。 所以我现在正在做的是创build一个具有相同代码库的应用程序,并为每个主题(水果,蔬菜等)使用自己的设置生成不同的目标。 现在这个工作真的很好,但我想确保我的应用程序都通过AppStore审查指南 。 关心我的是这一个: 4.3垃圾邮件不要创build同一个应用程序的多个Bundle ID。 如果您的应用针对特定地点,运动队,大学等有不同的版本,请考虑提交一个应用,并使用应用内购买提供这些变体。 也避免堆放在已经饱和的类别上; App Store已经有足够的放屁,打嗝,手电筒和Kama Sutra应用程序。 垃圾邮件可能会导致您从开发者计划中删除。 所以我已经阅读了一些文章 ,谈到了用相同的代码库完成多个应用程序的最佳方式,但是最近还没有人看到有关苹果限制这个东西的人。 如果使用不同的目标,这不是苹果批准的解决scheme,而且您知道,我会很高兴听到! 我想避免的是制作一个应用程序,并让用户select他想要的食物types(按照我的示例场景)。 所以我的目标是针对所有不同的主题有多个应用程序,并使苹果批准它。 提前致谢!

如何在iOS 7中仍然使用iOS6 UI?

从苹果的转换指南我知道,在iOS 7中没有四舍五入的button,但是当我看到许多在iOS 7中运行的“旧”应用程序仍然是iOS 6风格。 我最近在iOS 6开发了一个应用程序,一切都很好。 但iOS 7发布后,我不得不改变很多用户界面,例如,导航栏和栏button项。 但我真的不想采用iOS 7风格,但与我的应用程序,用户界面不能采用自己的iOS 6。 即使我使用iOS 6 SDK,并在iOS 5中发布我的应用程序,它仍然使用iOS 7风格,看起来很糟糕。 任何想法和build议? 谢谢

Xcode版本8中的代码签名问题

iOS 10发布后,我将Xcode更新为版本8。 苹果在代码签名过程中做了一些改变,现在已经在目标设置的一般部分中提供了。 但问题是我的生产configuration文件显示为不合格。 这个错误信息即将到来: “xxxproductionprovisioningprofile”不包括签署证书“iPhone分发:xxx(xxx)”。 我再次使用相同的分发证书创buildconfiguration文件。 分配证书也存在于钥匙串中。 在Xcode 7.3及更早版本中,一切正常。 任何帮助表示赞赏。