我最近升级到Xcode 6.2.好像有一个奇怪的错误.例如,如果我想更改包ID,则在输入任何字符后,文本字段将失去焦点.
有人有同样的问题吗?有谁知道如何解决这个问题?
这对我来说非常烦人,我猜其他任何人也是如此.
我刚刚在Facebook SDK for iOS中看到他们最后调用[super layoutSubviews];而不是在layoutSubviews方法的开头.
据我所知,我们应该始终把它作为第一行.可以以不同的方式实现它会导致任何意外的UI行为吗?
- (void)layoutSubviews
{
CGSize size = self.bounds.size;
CGSize longTitleSize = [self sizeThatFits:size title:[self _longLogInTitle]];
NSString *title = (longTitleSize.width <= size.width ?
[self _longLogInTitle] :
[self _shortLogInTitle]);
if (![title isEqualToString:[self titleForState:UIControlStateNormal]]) {
[self setTitle:title forState:UIControlStateNormal];
}
[super layoutSubviews];
}
Run Code Online (Sandbox Code Playgroud) 我有这个代码:
NSDateFormatter *dateFormatter = [[NSDateFormatter alloc] init];
NSMutableArray *daysNames = [NSMutableArray arrayWithArray:dateFormatter.weekdaySymbols];
NSLog(@"daysNames = %@", daysNames);
Run Code Online (Sandbox Code Playgroud)
它输出:
daysNames = (
Sunday,
Monday,
Tuesday,
Wednesday,
Thursday,
Friday,
Saturday
)
Run Code Online (Sandbox Code Playgroud)
我的问题是:
如果用户位于美国以外的其他国家/地区,让我们说法国或俄罗斯,阵列是否仍然从星期日(而不是星期一)开始,或者我不应该依赖于此?
事情是我设置闹钟日.在视觉上,用户从表视图中选择,该视图在第一行中始终具有星期一.如果日期设置与否,我会根据事实在NSMutableArray中保留0或1.如果daysNames [0]总是对应于星期日,我可以轻松地将所有元素向右移动一个位置,并且一切都将正确映射,否则当周星期一开始而不是星期日时,我还会遇到更多令人头疼的问题.
这是我为此写的完整代码(在美国它运作完美):
// Set the short days names
NSDateFormatter *dateFormatter = [[NSDateFormatter alloc] init];
NSMutableArray *daysNames = [NSMutableArray arrayWithArray:dateFormatter.weekdaySymbols];
NSLog(@"daysNames = %@", daysNames);
// daysNames will become @"SUN MON TUE WED THU FRI SAT";
for (NSInteger i = 0; i < daysNames.count; i++) {
NSUInteger length = ((NSString *)daysNames[i]).length; …Run Code Online (Sandbox Code Playgroud) 我有一个名为Int的类型的变量
var number = value!.integerValue as Int
Run Code Online (Sandbox Code Playgroud)
现在我必须使用该值创建一个NSNumber对象.
我正在尝试使用此构造函数
value = NSNumber(int: number)
Run Code Online (Sandbox Code Playgroud)
,但它不起作用.
它期望原始类型int,而不是Int我猜.
有谁知道怎么解决这个问题?
谢谢!
我曾经认为协议方法的默认/隐式说明符是可选的。但是,在我当前的项目中,如果我没有专门添加@optional说明符,则会看到一条警告。没什么大不了的。我只是想知道,是否有一段时间是可选的默认值,现在是必需的?或者也许是我前一段时间学习Objective-C时错过了一些东西。
提前致谢!
我重构了一些有人在3年多前为iOS写过的Objective-C代码.我看到viewDidDisapppear:方法被这样重写:
- (void)viewDidDisappear:(BOOL)animated
{
[pagingView unloadData];
[super viewDidDisappear:animated];
}
Run Code Online (Sandbox Code Playgroud)
它工作正常,但我想知道,行:
[super viewDidDisappear:animated];
Run Code Online (Sandbox Code Playgroud)
应该在结尾或开头.
我知道viewDidAppear:这是一个很好的做法:
[super viewDidAppear:animated];
Run Code Online (Sandbox Code Playgroud)
作为第一线.
另外,我知道dealloc(如果我们不使用ARC),我们写道:
[super dealloc];
Run Code Online (Sandbox Code Playgroud)
在末尾.
所以我在viewDidDisapppear:的情况下有点困惑,它应该在哪里.对我来说最后调用超类的方法是有道理的,但我有点困惑,不确定它是否是好的练习.
如果您知道确切的答案,请告诉我.
提前致谢!!!