关于Foundation framework classes摘要

Foundation framework classes
Foundation framework 地位如同 C++ 的 Standard Template Library。不过 Objective-C 是真正的动态识别语言(dynamic types),所以不需要像 C++ 那样肥得可怕的样版(templates)。这个 framework 包含了对象组、网络、线程,还有更多好东西。
NSArray
     基于 "Programming in Objective-C," Copyright © 2004 by Sams Publishing
main.m 
       #import <Foundation/NSArray.h>

       #import <Foundation/NSString.h>

       #import <Foundation/NSAutoreleasePool.h>

       #import <Foundation/NSEnumerator.h>

       #import <stdio.h>

 

      void print( NSArray *array ) {

          NSEnumerator *enumerator = [array objectEnumerator];

          id obj;

  

        while ( obj = [enumerator nextObject] ) {

          printf( "%s/n", [[obj description] cString] );

       }

  }

 

    int main( int argc, const char *argv[] ) {

       NSAutoreleasePool *pool = [[NSAutoreleasePool alloc] init];

       NSArray *arr = [[NSArray alloc] initWithObjects:

                  @"Me", @"Myself", @"I", nil];

      NSMutableArray *mutable = [[NSMutableArray alloc] init];

  

      // enumerate over items

      printf( "----static array/n" );

      print( arr );

  

      // add stuff

      [mutable addObject: @"One"];

      [mutable addObject: @"Two"];

      [mutable addObjectsFromArray: arr];

      [mutable addObject: @"Three"];

  

      // print em

      printf( "----mutable array/n" );

      print( mutable );

  

      // sort then print

      printf( "----sorted mutable array/n" );

      [mutable sortUsingSelector: @selector( caseInsensitiveCompare: )];

      print( mutable );

     

     // free memory

      [arr release];

      [mutable release];

      [pool release];

  

      return 0;

}

 
 
output 
  ----static array

  Me

  Myself

  I

  ----mutable array

  One

  Two

  Me

  Myself

  I

  Three

  ----sorted mutable array

  I

  Me

  Myself

  One

  Three

Two

 
 
数组有两种(通常是 Foundation classes 中最数据导向的部分),NSArray 跟 NSMutableArray,顾名思义,mutable(善变的)表示可以被改变,而 NSArray 则不行。这表示你可以制造一个 NSArray 但却不能改变它的长度。
你可以用 Obj, Obj, Obj, ..., nil 为参数呼叫建构子来初始化一个数组,其中 nil 表示结尾符号。
排序(sorting)展示如何用 selector 来排序一个对象,这个 selector 告诉数组用 NSString 的忽略大小写顺序来排序。如果你的对象有好几个排序方法,你可以使用这个 selector 来选择你想用的方法。
在 print method 里,我使用了 description method。它就像 Java 的 toString,会回传对象的 NSString 表示法。
NSEnumerator 很像 Java 的列举系统。while ( obj = [array objectEnumerator] ) 行得通的理由是 objectEnumerator 会回传最后一个对象的 nil。在 C 里 nil 通常代表 0,也就是 false。改用 ( ( obj = [array objectEnumerator] ) != nil ) 也许更好。
NSDictionary
     基于 "Programming in Objective-C," Copyright © 2004 by Sams Publishing
main.m 
  #import <Foundation/NSString.h>

  #import <Foundation/NSAutoreleasePool.h>

  #import <Foundation/NSDictionary.h>

  #import <Foundation/NSEnumerator.h>

  #import <Foundation/Foundation.h<

  #import <stdio.h>

  

  void print( NSDictionary *map ) {

      NSEnumerator *enumerator = [map keyEnumerator];

      id key;

  

      while ( key = [enumerator nextObject] ) {

          printf( "%s => %s/n",

                  [[key description] cString],

                  [[[map objectForKey: key] description] cString] );

      }

  }

  

  int main( int argc, const char *argv[] ) {

      NSAutoreleasePool *pool = [[NSAutoreleasePool alloc] init];

      NSDictionary *dictionary = [[NSDictionary alloc] initWithObjectsAndKeys:

          @"one", [NSNumber numberWithInt: 1],

          @"two", [NSNumber numberWithInt: 2],

          @"three", [NSNumber numberWithInt: 3],

          nil];

      NSMutableDictionary *mutable = [[NSMutableDictionary alloc] init];

  

      // print dictionary

      printf( "----static dictionary/n" );

      print( dictionary );

  

      // add objects

      [mutable setObject: @"Tom" forKey: @"tom@jones.com "];

     [mutable setObject: @"Bob" forKey: @"bob@dole.com " ];

  

      // print mutable dictionary

      printf( "----mutable dictionary/n" );

      print( mutable );

  

     // free memory

      [dictionary release];

      [mutable release];

      [pool release];

  

      return 0;

}

 
 
output 
  ----static dictionary

  1 => one

 2 => two

  3 => three

  ----mutable dictionary

      bob@dole.com => Bob

     tom@jones.com => Tom

 

阅读更多
个人分类: Iphone开发
想对作者说点什么? 我来说一句

Microsoft Foundation Classes and Templates

2008年09月04日 6.08MB 下载

没有更多推荐了,返回首页

加入CSDN,享受更精准的内容推荐,与500万程序员共同成长!
关闭
关闭