В принципе, я следующий код (описано здесь: Objective-C Constants in Protocol)Objective-C Можно ли перезаписать [NSObject initialize]?
// MyProtocol.m
const NSString *MYPROTOCOL_SIZE;
const NSString *MYPROTOCOL_BOUNDS;
@implementation NSObject(initializeConstantVariables)
+(void) initialize {
if (self == [NSObject class])
{
NSString **str = (NSString **)&MYPROTOCOL_SIZE;
*str = [[MyClass someStringLoadedFromAFile] stringByAppendingString:@"size"];
str = (NSString **)&MYPROTOCOL_BOUNDS;
*str = [[MyClass someStringLoadedFromAFile] stringByAppendingString:@"bounds"];
}
}
@end
мне было интересно: Является ли это безопасно для меня, чтобы иметь категорию, которая подменяет +initialize
метод в NSObject в?
Во-первых, вам не нужно создавать категорию, для которой время выполнения вызовет вашу инициализацию, оно будет делать это автоматически до отправки любого сообщения. Во-вторых, что вы подразумеваете под «безопасностью»? Кто-нибудь читает документацию больше ??? –
Посмотрите на категорию ... Это переписывание класса NSObject, а не моего класса. Я пытаюсь иметь метод, который, как я знаю, будет вызываться в начале любой программы, которая использует структуру, которую я создаю. –