IOS Foundation基础知识

1. 如果某个对象obj为nil,在执行obj的方法时
          int i = [obj methodWhichReturnInt]      这时的 i=0 ,程序运行正常
    如果执行函数返回值为结构体,如:CGPoint p = [obj  getLocation] 则p为undifined

2.object 的自省机制
          isKindOfClass:返回变量是否为指定类的对象(包含子类)。
          isMemberOfClass:返回变量是否为指定类的对象(不包含子类)。
          respondsToSelector: 返回变量是否包含指定的方法。

   例子:
          if ( [obj respondsToSelector:@selector(shootAt:) ] ){
                   [obj shootAt:target];
          }
          //  @selector(方法名)  返回值的类型为 SEL      SEL shootAtSelector = @selector(shootAt:);

3.通过performSelector:  或者 performSelector:  withObject:  这两个方法让变量执行特定方法。
     例子:
               [obj performSelector:shootSelector];
               [obj performSelector:shootAtSelector  withObject:coordinate];
     对于:NSArray,可以让数组内部的数据全部指定某个方法
               [array makeObjectsPerformSelector:shootSelector];
               [array makeObjectsPerformSelector:shootSelector withObject:target];
     这种情况在UIButton中应用比较多
               [button addTarget:self action:@selector(digitPressed:) …]

4.在NSLog的使用%@时,会默认调用[obj description]  
     NSLog(@“array contents are %@“,myArray);     //%@会调用  [myArray description]

     - (NSString *)description 是一个NSObject基本方法,必要时需要进行重写。

5.在循环 遍历NSArray时,一定要使用id类型,在遍历过程中再判断NSArray每个元素的类型进行强制转换。
     for ( id obj in myArray ) {
              if ( [obj isKindOfClass:[NSString class]] ) {
                   //这样可以确保obj的类型判断的正确性
               }
     }

6. NSNumber初始化
     NSNumber *three = @3;
     NSNumber *n = [NSNumber numberWithInt:36];
            
7. NSDictionary  以键值对的方式进行存储
     
     初始化: NSDictionary *colors = @{ @“green” : [UIColor greenColor],
                                                             @“blue” : [UIColor blueColor],
                                                             @“red” : [UIColor redColor] };
                     UIColor *colorObject = colors[colorString];
                     //或者是
                     - (id)objectForKey:(id)key;

8. NSUserDefaults  再启动应用时用于存储一些用户的简单数据,实质上是一个NSDictionary,默认获取的方法为:
     [[NSUserDefaults standardUserDefaults] setArray: rvArray forKey: @“RecentlyViewed” ];

     再添加完成数据后需要执行:[[NSUserDefaults standardUserDefaults] synchronize];


9. NSRange  是一个c语言的结构体类型
          typedef struct {
                   NSUInteger location;
                   NSUInteger length;
          } NSRange;
          //其中NSNotFound  就是一个location类型     
     
          //下面的程序为查找greeting字符串中是否包含  hi
          NSString *greeting = @“hello world”;
          NSString *hi = @“hi”;
          NSRange r = [ greeting  rangeOfString: hi ];
          if ( r.location == NSNotFound ) {
                   NSLog(@“Not found");
          }
          

10. UILabel  有一个属性 attributedText ,这时个NSAttributedString类型,并不是一个mutable类型,所以,
如果我们需要更改label文字的属性时,只能时西安复制,再重新赋值。

          NSMutableAttributedString *labelText = [myLabel attributedText mutableCopy];
          [labelText setAttributes: …];
          myLabel.attributedText = labelText;
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值