Расширение класса в стиле C# в target-c
Я просто изучаю цель-c после достаточного опыта работы с C#. Одна из вещей, которые мне очень не хватает, - это возможность писать методы расширения в отдельном проекте, на который я мог бы ссылаться во всех своих проектах. Вот несколько наивных C#:
public static bool IsShortString(this string s) {
return s.length <= 3;
}
В Visual Studio я мог бы просто добавить ссылку, using
и бац myString.IsShortString()
будет довольно бесполезным методом.
Поэтому я думаю, что хочу написать статическую библиотеку, но я не уверен, куда я иду оттуда.
Еще один вопрос, если я напишу эту статическую библиотеку, смогу ли я использовать все методы в разных файлах библиотеки, используя один #import
директива, или мне придется импортировать каждый заголовок отдельно?
2 ответа
То, что вы ищете, называется Категория, и это позволяет вам добавлять некоторые дополнительные методы к существующим классам. Проверьте ссылку http://developer.apple.com/library/ios/#documentation/cocoa/conceptual/objectivec/chapters/occategories.html
Вы можете создать свой собственный инструментарий, представляющий собой статическую библиотеку, содержащую созданные вами категории. Обычной практикой является создание одного заголовочного файла, содержащего импорт для всех заголовков в lib, поэтому при его использовании вы просто делаете
#import "libName.h"
Кроме того, при создании статической библиотеки, содержащей категории, важно включать -all_load
а также -ObjC
флаги компоновщика для вашего проекта.