none
как нам хорошо живется RRS feed

  • Общие обсуждения

  • писал я уже под osX некоторое время, но писал под mono на cs и не лез особо в глубины икскода за ненадобностью, но тут задание дали разобраться в одной библиотеке, собственно фактически с нуля Objective C пришлось учить ударными темпами. Особо не боялся, я вырос на семействе C-языков, но когда дошло конкретно до чтения чужого кода, я понял как мы были счастливы раньше. очевидный код C# class C { public int number; public void SetNumber(int n) { number = n; } public void PrintNumber() { Console.WriteLine(number); } } class B { public C GetC() { C c = new C { number = 15 }; return c; } } class A { public B GetB() { B b = new B(); return b; } } class Program { static void Main(string[] args) { (new A()).GetB().GetC().PrintNumber(); } } тот же адский код на ObjC #import <Foundation/Foundation.h> @interface C : NSObject { int number; } -(void) SetNumber: (int) n; -(void) PrintNumber; @end @interface B : NSObject { } -(C*) GetC; @end @interface A : NSObject { } -(B*) GetB; @end @implementation C -(void) SetNumber: (int) n { number = n; } -(void) PrintNumber { NSLog(@"%i", number); } @end @implementation B -(C*) GetC { C * cObj = [[C alloc] init]; [cObj SetNumber: 15]; return cObj; } @end @implementation A -(B*) GetB { B * bObj = [[B alloc] init]; return bObj; } @end int main() { NSAutoreleasePool * pool = [[NSAutoreleasePool alloc] init]; [[[[[A alloc] init] GetB] GetC] PrintNumber]; [pool drain]; return 0; } особенно раздражают квадратные скобки, в реальных случаях вложенность может достигать 3-5, плюс длинные названия методов for(NSString *aKey in self->attributes) { [chunks addObject:[NSString stringWithFormat:@"%@:%@", aKey, [attributes objectForKey:aKey]]]; } тут просто логически глазами токены разделять сложно, а еще это воспринимать надо.
    15 февраля 2011 г. 21:46

Все ответы

  • если там еще код надо без переносов писать - снимаю шляпу
    15 февраля 2011 г. 22:32
  • что это такое?

    видимо что-то с чем-то не дружит, хм, а раньше вроде срабатывало

    ну, я думаю, идея  ясна. Те кто вырос на Visual C++, C# или Java и переходит на Objective C, бывает очень удивлен синтаксических конструкциям этого гибрида С и Smalltalk.

    21 февраля 2011 г. 19:46