美文网首页
update5 动态绑定,Foundation内主要封装类以及U

update5 动态绑定,Foundation内主要封装类以及U

作者: 冰风47 | 来源:发表于2016-07-06 14:32 被阅读11次
    1. Introspection(内省)
      主要通过"id"来进行类型校验
      应用范围: array校验. mvc中盲通信
      例如在一个NSArray(假设名称为tmpArray)里校验某元素是否为UIButton
    for(id item in tmpArray)
    {
      if ([item isKindOfClass : [UIButton Class]]) {
        /* code */
            UIButton * buttonItem = (UIButton *)item;
      }
    }
    
    1. SEL定义
      SEL是objective-c对selector(选择器)的类型定义.
      (跟BOOL一样, 都是typedef出来的).
      应用范围比较广. 很强大
      可以对NSObject使用, 也可以针对NSArray使用(可以少些forin循环了),也可以应用在绑定UI控件的功能上(这样就不用control+鼠标拖拽方式绑定控件了?).

    eg:

    SEL shootSelector = @selector(shoot);
    SEL shootAtSelector = @selector(shootAt:);
    SEL moveToSelector = @selector(moveTo:withSth);
    
    NSObject:
    [obj performSelector:shootSelector];
    [obj preformSelector:ShootAtSelector withObject:coordinate];
    NSArray:
    [array makeObjectsPerformSelector:shootSelector];
    [array makeObjectsPerformSelector:shootAtSelector withObject:target];
    UIButton: -(void)addTarget:(id)anObject action:(SEL)action ...;
    [button addTarget:Self action:@selector(didPressed:)...];
    

    Foundation:
    NSObject.
    最基础的类, 提供了内省检查, description等一些基础功能.

    NSString.
    字符串类

    NSData.
    数据类, 比如存储二进制数据.

    NSDate.
    日期类. 使用时要根据具体情况具体解析格式.

    NSNumber.
    数字类(对象代理器 object wrapper). 可存int, float, double, enum, 任何计算得到原始类型的数据.
    NSNumber * tmpNumber = @3;
    = @3.1;
    = @3.14;
    = @(NSUnderLineStyleSingle);
    = @[card match:@[otherCard]];
    此@()使用方式均为自动装箱.

    NSValue.
    数据类(对象代理器 object wrapper). 可代理非object, 非原始类型数据, 例如structure. 转化为字符串较好. 具体应用范围待详查.

    NSArray.
    数组类. 可变数组为:(NSMutableArray)

    NSSet
    集合类. 可变集合为:(NSMutableSet). (经过hash处理,可高速返回内含多少个对象,比array有一些优势)

    NSOrderedSet.
    有序集合类. 可变集合为:(NSMutableOrderSet).

    NSDictionary.
    字典类. 可变集合为:(NSMutableDictionary).
    这里的key和value均为strong类型.
    key最好为string 这样hash处理比较好.
    定义为:
    NSDictionary * colors = @{key1:value1, key2:value2};

    NSDictionary * colors = @{ @"blue" : [UIColor blueColor],
                                @"red" : [UIColor redColor], 
                              @"green" : [UIColor greenColor]};
    

    可以直接以map形式访问:

    UIColor * readColor = colors["red"];
    

    也可以用:

    - (id) objectForKey: (id) key;
    

    mutableDictionary可以使用 alloc/init方式创建, 也可以: + (id)dictionary.类方法方式创建.

    Property List(属性列表).
    属性列表就是集合的集合(collection of collections).
    必须是NSArray 或 NSDictionary.
    为什么要使用属性列表?
    因为ios sdk里有一堆方法都要用到属性列表..

    NSUserDefaults.
    轻量级的存储属性列表的东西~
    仅供存一些不复杂的基础的数据.
    进程中只有一个实例化的NSUserDefaults.
    使用如下方式获取以及赋值,提交:

    [[NSUserDefaults standardUserDefaults] setArray: rvArray for key:@"RecentlyViewed"];
    [[NSUserDefaults standardUserDefaults] synchronize];
    

    NSRange
    结构体 内含location以及length. 用来标识范围

    UIColor
    用来表现颜色的对象. 支持rgba.

    UIFont.
    字体类. 可用系统字体, 用户自定义字体以及NSAttributedString来丰富字体表现
    (最好不要在用户上下文里用系统字体)

    UIFontDescriptor
    可以在已有的UIFont中获取到这个描述方法, 配合自定义的NSAttributedString来进行修改字体效果.

    NSAttributedString
    并不是NSString的子类, 只是一个拥有一堆NSString属性的集合字典.
    (可修改的版本为:NSMutableNSAttributedString)
    属性都有哪些呢? 颜色, 字体, 下划线, 描边等等都算属性.
    获取方式如下:

     - (NSDictionary *) attributesAtIndex : (NSUInteger) index
                                      effectiveRange: (NSRangePointer) range;
    

    NSMutableAttributedString
    使用方式:

    - (void)addAttributes : (NSDictionary *)attrubutes
                            range : (NSRange) range;
    
    - (void)setAttributes : (NSDictionary *)attrubutes
                          range : (NSRange) range;
    
    - (void)removeAttributes : (NSDictionary *)attrubutes
                                 range : (NSRange) range;
    

    UILable
    显示文字标签用.

    相关文章

      网友评论

          本文标题:update5 动态绑定,Foundation内主要封装类以及U

          本文链接:https://www.haomeiwen.com/subject/xmekjttx.html