update5 动态绑定,Foundation内主要封装类以及UIKit部分类杂记

  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内主要封装类以及UIKit部分类杂记)