我在prefix.pch文件中包含了一个标题,如下所示:
#import <Availability.h>
#ifndef __IPHONE_3_0
#warning "This project uses features only available in iPhone SDK 3.0 and later."
#endif
#ifdef __OBJC__
#import <UIKit/UIKit.h>
#import <Foundation/Foundation.h>
#import "Constants.h"
#endif
在包含的标题中是一个类扩展:
@interface UIColor (MyApp)
+(UIColor *) myColor;
+(UIColor *) navColor;
@end
@implementation UIColor (MyApp)
+(UIColor *) myColor { return [UIColor colorWithRed:0 green:0.3 blue:0.7 alpha:1.0]; }
+(UIColor *) navColor { return [UIColor colorWithRed:0.3 green:0.1 blue:0.2 alpha:1.0]; }
@end
然后我在其他文件中调用了它:
[self.theTable setSeparatorColor:[UIColor myColor]];
但是自从升级到xCode 4.2 / iOS 5后,它现在导致崩溃,在上面的行中说"Thread 1: Program received signal: "SIGABRT".
。
每当我尝试引用颜色时都会发生这种情况,无论哪个文件和上下文。在iOS 4上工作时我没有遇到这个问题。
是否更好的方法是以所有文件可用的方式扩展类,或修复上述错误?
非常感谢,
添
答案 0 :(得分:1)
您的声明应该在标题中:
@interface UIColor (MyApp)
+(UIColor *) myColor;
+(UIColor *) navColor;
@end
,您的定义应该在您的.m:
中@implementation UIColor (MyApp)
+(UIColor *) myColor { return [UIColor colorWithRed:0 green:0.3 blue:0.7 alpha:1.0]; }
+(UIColor *) navColor { return [UIColor colorWithRed:0.3 green:0.1 blue:0.2 alpha:1.0]; }
@end
这可能不一定是你的SIGABRT的原因,但你的@implementation
块应该只对一个翻译可见(惊讶它没有给出链接错误,除非我误解了你的问题)。
是否还有为什么程序崩溃的上下文?