我有我的应用程序的“免费”和“付费”版本,我想同时自动增加两个内部版本号,因为有时我会测试“免费”版本,有时会测试“付费”版本,具体取决于关于我在做什么。这些基本上是相同的代码库,我只有两个目标,这些目标的预处理器指令定义为“付费”版本,以解锁某些内容。
我在这个问题中使用代码: XCode中的版本vs构建
#!/bin/bash
buildNumber=$(/usr/libexec/PlistBuddy -c "Print CFBundleVersion" "$INFOPLIST_FILE")
buildNumber=$(($buildNumber + 1))
/usr/libexec/PlistBuddy -c "Set :CFBundleVersion $buildNumber" "$INFOPLIST_FILE"
Run Code Online (Sandbox Code Playgroud)
我想我只需要再添加两行,即可指定到另$INFOPLIST_FILE一条的路径:
"Print CFBundleVersion" "NEW_PATH/$INFOPLIST_FILE"
Run Code Online (Sandbox Code Playgroud)
并增加它,但是当我构建另一个目标时,如何获取到该目标的Plist的路径?
我提出了一个小的"登录" UIViewController作为UIModalPresentationFormSheet自定义边界.在该viewWillLayoutSubviews方法中,我将视图的大小更改为(300,250).这在iOS 5/6/7中有效,但在8中不再有效.
当显示视图并点击a时UITextField,应用程序变得无响应(未冻结,只是没有响应触摸).几乎就像键盘出现但没有出现.委托方法被正确调用.如果我self.view.superview.bounds = CGRectMake(0, 0, 300, 250);从viewWillLayoutSubviews方法中删除键盘,但视图现在是全尺寸UIModalPresentationFormSheet样式.
这只发生在iOS 8中,所以我只能假设键盘呈现的方式以及我屏蔽/调整视图大小的方式存在问题,但我对解决方案感到茫然.
呈现ViewController -
UserLoginViewController *loginVC = [[UserLoginViewController alloc] initWithNibName:@"UserLoginViewController" bundle:nil];
loginVC.modalPresentationStyle = UIModalPresentationFormSheet;
loginVC.delegate = self;
[self presentViewController:loginVC animated:YES completion:nil];
Run Code Online (Sandbox Code Playgroud)
编辑视图边界 -
- (void)viewWillLayoutSubviews {
[super viewWillLayoutSubviews];
self.view.superview.layer.cornerRadius = 10.0;
self.view.superview.layer.masksToBounds = YES;
self.view.superview.bounds = CGRectMake(0, 0, 300, 250);
}
Run Code Online (Sandbox Code Playgroud) 我有一个名为SurveyQuestion的UIViewController的子类.我为我的应用程序使用了这些数组.我用这一行得到了当前可见的控制器:
SurveyQuestion *currentQuestionController = [self.navigationController visibleViewController];
Run Code Online (Sandbox Code Playgroud)
一切正常,但Xcode给了我一个警告
Incompatible pointer types initializing 'SurveyQuestion *__strong' with an expression of type 'UIViewController *'
Run Code Online (Sandbox Code Playgroud)
我知道这是因为visibleViewController返回一个UIViewController,但它的工作原理是因为SurveyQuestion是一个UIViewController.有没有办法压制这个错误?或者我应该以不同的方式做到这一点?