【发布时间】:2010-11-04 16:16:46
【问题描述】:
好的,我有这个,但它不会工作:
@interface UILabel (touches)
@property (nonatomic) BOOL isMethodStep;
@end
@implementation UILabel (touches)
-(BOOL)isMethodStep {
return self.isMethodStep;
}
-(void)setIsMethodStep:(BOOL)boolean {
self.isMethodStep = boolean;
}
-(void)touchesBegan:(NSSet *)touches withEvent:(UIEvent *)event {
if(self.isMethodStep){
// set all labels to normal font:
UIFont *toSet = (self.font == [UIFont fontWithName:@"Helvetica" size:16]) ? [UIFont fontWithName:@"Helvetica-Bold" size:16] : [UIFont fontWithName:@"Helvetica" size:16];
id superView = self.superview;
for(id theView in [(UIView *)superView subviews])
if([theView isKindOfClass:[UILabel class]])
[(UILabel *)theView setFont:[UIFont fontWithName:@"Helvetica" size:16]];
self.font = toSet;
}
}
@end
如果我取出 getter 和 setter 方法,那么它不起作用,它告诉我需要创建一些 getter 和 setter 方法(或使用 @synthesize - 但将 @synthesize 放入 @implementation 也会引发错误)。但是使用 getter 和 setter 方法,我得到一个 EXC_BAD_ACCESS 和一个崩溃。有任何想法吗?谢谢
汤姆
【问题讨论】:
-
这个家伙 'Dave DeLong' 发布了一个你应该检查的答案......这可能是做你想做的事情的“正确”方式...... :) here's the link...
-
关联参考是解决方案...在这里找到很好的教程techpaa.com/2012/04/adding-properties-to-categories-and.html
-
另外,您的
isMethodStepgetter 是一个无限递归函数。这就是您遇到 EXC_BAD_ACCESS 崩溃的原因。self.isMethodStep等价于[self isMethodStep]。
标签: objective-c ios categories