Расширение класса в Prefix.pch больше не работает с xCode 4.2 - PullRequest
0 голосов
/ 22 октября 2011

Я включил заголовок в свой файл 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.

Есть ли лучший способ расширить класс таким образом, чтобы он был доступен для всех файлов, или исправить вышеуказанную ошибку?

Большое спасибо,

Тим

1 Ответ

1 голос
/ 22 октября 2011

Ваши объявления должны быть в заголовке:

@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 блок должен быть виден только одному переводу (удивлен, что он не выдал ошибку ссылки, если я не понял вашего вопроса).

Есть ли еще контекст для почему программа упала?

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...