NSClassFromString,NSSelectorFromString,isKingOfClasscode
NSClassFromStringorm
这个方法判断类是否存在,若是存在就动态加载的,不存为就返回一个空对象;对象
id myObj = [[NSClassFromString(@"MySpecialClass") alloc] init];ci
正常状况下等价于:id myObj = [[MySpecialClass alloc] init];it
优势:form
1, 弱化链接,所以并不会把没有的Framework也link到程序中。import
2,不须要使用import,由于类是动态加载的,只要存在就能够加载。所以若是你的toolchain中没有某个类的头文件定义,而你确信这个类是能够用的,那么也能够用这种方法。配置
NSSelectorFromStringobject
这个方法是上个方法的补充,也是动态加载实例方法。程序
SEL sel = NSSelectorFromString(@"doSomethingMethod:")//注意这个冒号,说明方法带有参数
if([object respondsToSelector:sel]) {
[object performSelector:sel withObject:color]; //注意若是有两个参数,使用两个withObject:参数;
}
isKindOfClass
isKindOfClass 咱们也可使用isKindOfClass来检查一个对象是不是一个类的成员
isMemberOfClass
isMemberOfClass方法是来肯定对象是不是某一个类的成员
initWithCoder和initWithFrame的区别 initWithCoder是一个类在IB中建立但在xocdde中被实例化时被调用的.好比,经过IB建立一个controller的nib文件,而后在xocde中经过initWithNibName来实例化这个controller,那么这个controller的initWithCoder会被调用.
initWithFrame是由用户建立的UIView子类,实例时被调用
UIView autoresizingMask
若是视图的autoresizesSubviews属性声明被设置为YES,则其子视图会根据autoresizingMask属性的值自动进行尺寸调整。简单配置一下视图的自动尺寸调整掩码经常就能使应用程序获得合适的行为;不然,应用程序就必须经过重载layoutSubviews方法来提供本身的实现。
self.autoresizingMask = UIViewAutoresizingFlexibleWidth;//这个常量若是被设置,视图的宽度将和父视图的宽度一块儿成比例变化。不然,视图的宽度将保持不变。
UIViewAutoresizingNone
这个常量若是被设置,视图将不进行自动尺寸调整。
UIViewAutoresizingFlexibleHeight
这个常量若是被设置,视图的高度将和父视图的高度一块儿成比例变化。不然,视图的高度将保持不变。
UIViewAutoresizingFlexibleWidth
这个常量若是被设置,视图的宽度将和父视图的宽度一块儿成比例变化。不然,视图的宽度将保持不变。
UIViewAutoresizingFlexibleLeftMargin
这个常量若是被设置,视图的左边界将随着父视图宽度的变化而按比例进行调整。不然,视图和其父视图的左边界的相对位置将保持不变。
UIViewAutoresizingFlexibleRightMargin
这个常量若是被设置,视图的右边界将随着父视图宽度的变化而按比例进行调整。不然,视图和其父视图的右边界的相对位置将保持不变。
UIViewAutoresizingFlexibleBottomMargin
这个常量若是被设置,视图的底边界将随着父视图高度的变化而按比例进行调整。不然,视图和其父视图的底边界的相对位置将保持不变。
UIViewAutoresizingFlexibleTopMargin
这个常量若是被设置,视图的上边界将随着父视图高度的变化而按比例进行调整。不然,视图和其父视图的上边界的相对位置将保持不变。