После долгого пропуска решил немного написать. Быть может это пригодится еще кому-нибудь. Сталкиваюсь с информацией, на которую большой спрос в англоязычной части интернета и весьма скудное описание в русскоязычной. Objective C. Это то, с чем мне пришлось познакомиться не так давно. Пока воспоминания свежи напишу, пока разрозненно, потом постараюсь "собрать в кучу". Итак. Кажется, что это C/C++ с небольшими отличиями.
1) вместо обычного расширения .c или .cpp - .m
2) вместо #include - #import/
3) вместо class - @interface в заголовочном файле и @implementation в основном. Чем-то такая конструкция напомнила pascal с его модулями unit. Но никак не ожидал подобное увидеть в C.
4) вместо static - "+". для nonstatic (то есть принадлежащих объектам, а не классам) членов - "-".
5) Конкатенация (слияние) строк - отдельная тема для разговора. Конструкции такие, как "string1"."string2" как в php или хотя бы "string1"+"string2" - как в javascript или C# не работают. Самый "простой" (без преобразования типов в NSMutableString или NSArray) вариант - вызов сообщения stringByAppendingString как пример -
NSString *str;
NSString *res;
...
res=[str stringByAppendingString:@"_"];
Второй вариант сцепления строк -
1) вместо обычного расширения .c или .cpp - .m
2) вместо #include - #import/
3) вместо class - @interface в заголовочном файле и @implementation в основном. Чем-то такая конструкция напомнила pascal с его модулями unit. Но никак не ожидал подобное увидеть в C.
4) вместо static - "+". для nonstatic (то есть принадлежащих объектам, а не классам) членов - "-".
5) Конкатенация (слияние) строк - отдельная тема для разговора. Конструкции такие, как "string1"."string2" как в php или хотя бы "string1"+"string2" - как в javascript или C# не работают. Самый "простой" (без преобразования типов в NSMutableString или NSArray) вариант - вызов сообщения stringByAppendingString как пример -
NSString *str;
NSString *res;
...
res=[str stringByAppendingString:@"_"];
Второй вариант сцепления строк -
[NSString stringWithFormat:@"%@/%@/%@", one, two, three];
Третий вариант - написание собственной статичной функции:
+ (NSString *) append:(id) first, ...
{
NSString * result = @"";
id eachArg;
va_list alist;
if(first)
{
result = [result stringByAppendingString:first];
va_start(alist, first);
while (eachArg = va_arg(alist, id))
result = [result stringByAppendingString:eachArg];
va_end(alist);
}
return result;
}
Комментариев нет:
Отправить комментарий