有没有机会使用iOS 6 SDK开发针对iOS 3.1.3的应用程序?如果我使用旧的部署目标打开我的项目,编译器会警告我:
iOS deployment targets lower than 4.3 are not supported
Run Code Online (Sandbox Code Playgroud)
这可能是由于仅明显的事实armv7和armv7s二进制文件可以建成.如果我armv6手动添加(直到iPhone 3G的设备),还有几个警告:
warning: no rule to process file '$(PROJECT_DIR)/main.m' of type sourcecode.c.objc for architecture armv6
...
...
warning: architecture armv6 is not supported (current ARCHS = "armv6 armv7 armv7s").
Run Code Online (Sandbox Code Playgroud)
那么我该如何处理呢?在使用iOS 6 SDK进行开发时,有没有办法支持iOS 3.1.3?如果没有,我最终将不得不转移到iOS 4.3的最低目标.甚至可以提交仅支持版本> = 4.3的新版本吗?我的用户在早期版本上会发生什么?他们是否根本没有被告知不兼容的更新,因此将继续使用我的应用程序的旧版本?如果没有,这可以实现吗?
在Xcode 6上,似乎已经取消了通过UIStoryboard设置滚动视图/表视图的内容插入的能力.见下图:

左边的参数来自Xcode 6,而右边的参数来自Xcode 5
有谁知道参数是否已移动,或者我们是否无法通过UIStoryboard设置内容插入?如果可能的话,我真的想保留我的代码.
有没有办法动画一些文本的字体大小的变化.我想从UIView的子类调用drawRect并以不同的大小绘制文本.
如何检查是否在Core Data Object中设置了属性?
我将所有核心数据对象加载到目录中:
var formQuestions = [Questions]()
Run Code Online (Sandbox Code Playgroud)
我的核心数据NSManagementObject是:
@NSManaged var noticeText: String
Run Code Online (Sandbox Code Playgroud)
formQuestions [indexPath.row] .noticeText
//加载:
var fetchRequest = NSFetchRequest(entityName: "Questions")
fetchRequest.predicate = NSPredicate(format: "forms = %@", currentForm!)
formQuestions = context.executeFetchRequest(fetchRequest, error: nil) as [Questions]
Run Code Online (Sandbox Code Playgroud)
我的属性"noticeText"可能是空的或不是,所以当我创建我的核心数据对象时,可能无法设置某些值.(该属性在Core Data中设置为可选)
当我现在尝试证明是否有值时,它总是给我带来"EXC_BAD_ACCESS ......"
if(formQuestions[indexPath.row].noticeText.isEmpty == false)
Run Code Online (Sandbox Code Playgroud)
我在创建核心数据对象时可以设置一个空字符串,但这应该不是一个好的解决方案.
那么如何检查(optinal)和未设置的值是否存在?
提前致谢.
我试图了解如何更好地实现模型 - 视图 - 控制器设计模式.
什么对象应该"拥有"Model对象?单个Controller是否应该实例化(拥有)Model对象?
以下是一个示例场景:
我有一个包含两个UIViewControllers(controllerA和controllerB)的UITabbarController.显然,这些控制器都不是彼此拥有的.我有一个Model对象,它包含一些数据并执行一些网络活动.controllerA和controllerB都需要能够对Model对象进行更改.controllerB需要知道何时对Model对象进行了更改(通过controllerA或从网络活动返回的结果).从最近的阅读:
主要是,两个控制器是否有任何其他方式来访问(写入)一个模型,而不是通过模型作为单例?
此外,当Controller拥有另一个Controller时(例如,当根视图控制器实例化另一个视图控制器以在其自身之上堆叠时,在UINavigationController中),共享模型的最佳方法是根视图控制器实例化模型,并且在将其推送到导航堆栈之前将其传递给下一个视图控制器)?
在针对iOS 6.0 SDK构建我的iPad应用程序后,我通过UISplitViewController的详细视图得到了这种奇怪的行为.详细视图的位置比应有的低20个像素(点/ 40像素).

这是5.1下的样子:

对于Interface Builder中的DetailViewController_iPad.xib,我将模拟指标>顶栏设置为无.这没有用.我已经记录了视图框:
- (void) viewDidLayoutSubviews {
//.. etc
NSLog(@"viewDidLayoutSubviews: %@", CGRectCreateDictionaryRepresentation(self.view.frame) );
}
Run Code Online (Sandbox Code Playgroud)
这将高度记录为684而不是它应该是:704.
Height = 684; Width = 703; X = 0; Y = 0;
任何人都有这方面的经验吗?我接下来应该尝试什么?
更新:这个问题似乎是间歇性的,有些编译导致它,有些则没有.
如果其他人遇到这个问题并找出原因造成的,我仍然很想知道.
这是一个小细节,但每次我懒得加载一些东西我都会被它抓住.这两种方法都可以接受吗?要么更好吗?假设变量具有retain属性.
方法#1
(AnObject *)theObject{
if (theObject == nil){
theObject = [[AnObject createAnAutoreleasedObject] retain];
}
return theObject;
}
Run Code Online (Sandbox Code Playgroud)
方法#2
(AnObject *)theObject{
if (theObject == nil){
self.theObject = [AnObject createAnAutoreleasedObject];
}
return theObject;
}
Run Code Online (Sandbox Code Playgroud)
首先,我不确定是否可以访问访问者中的另一个访问者功能(但不知道为什么不这样做).但似乎设置类变量而不通过setter可能同样糟糕,如果setter执行某些特殊操作(或者如果属性更改为除了retain之外的内容并且未检查getter).
memory-management lazy-loading objective-c lazy-initialization
我有一个MapView,我想在顶部显示一个黑色半透明矩形,里面有一个文本.不是整个地图上只有它的一部分(可能在顶角)就像一个信息框(就像双击时出现的iPod播放器中的一个,显示静音和跳过按钮).
我试过谷歌,但我没有得到任何明确的答案.如何实现这一目标的最佳方法是什么?
提前致谢
我是iOS的国际化和本地化的新手.我正在运行genstrings:
find . -name \*.m | xargs genstrings -o en.lproj生成我的Localizable.strings文件.它按字母顺序(按键)构建文件.
为了便于翻译,我希望键和值按照它们在.m文件中的出现顺序排序.这可能与genstrings?我在其man页面上找不到相关信息.
我想删除一个表视图单元格,但在该操作发生之前,我想给用户一个警报视图.我懂了:
- (void)tableView:(UITableView *)tableView commitEditingStyle:(UITableViewCellEditingStyle)editingStyle forRowAtIndexPath:(NSIndexPath *)indexPath {
if (editingStyle == UITableViewCellEditingStyleDelete) {
UIAlertView *alert = [[UIAlertView alloc] initWithTitle:@"Warning"
message:@"Are you sure?"
delegate:self
cancelButtonTitle:@"NO"
otherButtonTitles:@"YES", nil];
[alert show];
[self.array removeObjectAtIndex:indexPath.row];//or something similar to this based on your data source array structure
[tableView deleteRowsAtIndexPaths:[NSArray arrayWithObject:indexPath] withRowAnimation:UITableViewRowAnimationFade];
}
}
- (void)alertView:(UIAlertView *)alertView clickedButtonAtIndex:(NSInteger)buttonIndex
{
NSString *title = [alertView buttonTitleAtIndex:buttonIndex];
if([title isEqualToString:@"Nee"])
{
NSLog(@"Nothing to do here");
}
else if([title isEqualToString:@"Ja"])
{
NSLog(@"Delete the cell");
}
}
Run Code Online (Sandbox Code Playgroud)
但是现在当我在单元格上向右滑动并且删除按钮出现时,我没有AlertView.当我按下删除按钮时,我只获得AlertView.当我按下删除按钮时,将显示该消息但该单元格已被删除.
如何使这项工作?所以当我滑动时有一个AlertView.
ios ×6
iphone ×4
objective-c ×4
uiview ×3
ios6 ×2
swift ×2
uitableview ×2
xcode4.5 ×2
alpha ×1
animation ×1
cocoa-touch ×1
core-data ×1
genstrings ×1
lazy-loading ×1
localization ×1
object ×1
targets ×1
transparency ×1
uialertview ×1
uilabel ×1
uiscrollview ×1
uistoryboard ×1
xcode6 ×1