Хабр Курсы для всех
РЕКЛАМА
Практикум, Хекслет, SkyPro, авторские курсы — собрали всех и попросили скидки. Осталось выбрать!
if ([label respondsToSelector:@selector(resizeToContents)]) {
[label resizeToContents];
}
resizeToContents
вызывался через performSelector:
? Из статьи это не очевидно.performSelector
для методов, возвращающих что-то кроме id
нельзя.performSelector
проверяла NSMethodSignature
селектора и использовала NSInvocation
когда нужно.[self performSelector:@selector(selectorReturnCGFloat)];
if ([label respondsToSelector:@selector(resizeToContents)]) {
[label resizeToContents];
}
if ([label respondsToSelector:@selector(resizeToContents)]) {
[label performSelector:@selector(resizeToContents)];
}
interface UIView (SFAdditions)
/**
Handy getters and setters
*/
@property (nonatomic, assign) CGFloat width;
@property (nonatomic, assign) CGFloat height;
@property (nonatomic, assign) CGFloat left;
@property (nonatomic, assign) CGFloat right;
@property (nonatomic, assign) CGFloat bottom;
@property (nonatomic, assign) CGFloat top;
@property (nonatomic, assign) CGSize size;
end
resizeToContents
вообще возвращает значение? Судя по названию метода я бы сказал, что данный метод вообще не должен возвращать значений.CGRect frame = self.view.frame;
CGFloat x = CGRectGetMinX(frame);
CGFloat y = CGRectGetMinY(frame);
CGFloat width = CGRectGetWidth(frame);
CGFloat height = CGRectGetHeight(frame);
CGRect frame = self.view.frame;
CGFloat x = frame.origin.x;
CGFloat y = frame.origin.y;
CGFloat width = frame.size.width;
CGFloat height = frame.size.height;
История одного Crash-а, и NSLog'а его лечившего