Я хотел провести рефакторинг моего iOS приложения, написанного на Objective- C. Я создал новый класс Utility (файлы Utility.h и Utility.m).
Это мой заголовок Utility.h (Тип: по умолчанию C Заголовок)
// Utility.h
#import <Foundation/Foundation.h>
#import <UIKit/UIKit.h>
NSAttributedString *attributedTitle(NSString *title);
Это мой файл реализации Utility.m (Тип: По умолчанию - Цель- C Источник )
// Utility.m
#import "Utility.h"
NSAttributedString *attributedTitle(NSString *title) {
NSAttributedString *attributedTitle = [[NSAttributedString alloc] initWithString:title];
return attributedTitle;
}
Этот файл является членом моей цели и добавлен в «Этапы сборки -> Источник компиляции» (фактически первый файл). Foundation и UIKit также связаны между собой.
Я использую этот метод в другом файле Objective- C:
// OtherClass.m
#import "OtherClass.h"
#import "Utility.h"
@implementation OtherClass
- (id)init {
self = [super init];
if (self) {
NSAttributedString *string = attributedTitle(@"hello");
NSLog(@"%@", string);
}
return self;
}
@end
Этот файл .m также является членом моей цели. Я получаю ошибку
Undefined symbols for architecture x86_64 "_attributedTitle", referenced from:
-[OtherClass.m init] in OtherClass.o