Расширение класса в стиле 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 флаги компоновщика для вашего проекта.

Самая близкая вещь в объективе-c - это категории.

Это также хороший учебник по категориям.

Другие вопросы по тегам