Tho*_*son 14 objective-c categories ios
好的,所以我有这个,但它不会工作:
@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
Run Code Online (Sandbox Code Playgroud)
如果我取出getter和setter方法然后它不起作用它告诉我我需要创建一些getter和setter方法(或者使用@synthesize - 但是在@implementation中放入@synthesize也会引发错误).但是使用getter和setter方法,我得到一个EXC_BAD_ACCESS和崩溃.有任何想法吗?谢谢
汤姆
Vik*_*ica 39
无法通过仅类别方法向现有类添加成员和属性.
一种可能的解决方法是编写"setter/getter-like"方法,该方法使用单例来保存变量,这些变量本来就是成员.
-(void)setMember:(MyObject *)someObject
{
NSMutableDictionary *dict = [MySingleton sharedRegistry];
[dict setObject:someObject forKey:self];
}
-(MyObject *)member
{
NSMutableDictionary *dict = [MySingleton sharedRegistry];
return [dict objectforKey:self];
}
Run Code Online (Sandbox Code Playgroud)
或者 - 当然 - 编写一个继承自UILabel的自定义类
请注意,现在可以在运行时注入关联的对象.Objective C Programming Language:Associative References
| 归档时间: |
|
| 查看次数: |
27277 次 |
| 最近记录: |