NSClassFromString,NSSelectorFromString,isKingOfClass

1. NSClassFromString

  这种方法推断类是否存在,假设存在就动态载入的,不存为就返回一个空对象;

  id myObj = [[NSClassFromString(@"MySpecialClass") alloc] init];

  正常情况下等价于:id myObj = [[MySpecialClass alloc] init];

  长处:

1, 弱化连接,因此并不会把没有的Framework也link到程序中。

2,不须要使用import。由于类是动态载入的,仅仅要存在就能够载入。因此假设你的toolchain中没有某个类的头文件定义。而你确信这个类是能够用的。那么也能够用这样的方法。

2. NSSelectorFromString

  这种方法是上个方法的补充,也是动态载入实例方法。

  SEL sel = NSSelectorFromString(@"doSomethingMethod:")//注意这个冒号,说明方法带有參数

  if([object respondsToSelector:sel]) {

  [object performSelector:sel withObject:color]; //注意假设有两个參数,使用两个withObject:參数;

  }

3. isKindOfClass

  isKindOfClass 我们也能够使用isKindOfClass来检查一个对象是否是一个类的成员

4. isMemberOfClass

  isMemberOfClass方法是来确定对象是否是某一个类的成员

  

5. initWithCoder和initWithFrame的差别  initWithCoder是一个类在IB中创建但在xocdde中被实例化时被调用的.比方,通过IB创建一个controller的nib文件,然后在xocde中通过initWithNibName来实例化这个controller,那么这个controller的initWithCoder会被调用.

  initWithFrame是由用户创建的UIView子类,实例时被调用

6. UIView autoresizingMask

  假设视图的autoresizesSubviews属性声明被设置为YES。则其子视图会依据autoresizingMask属性的值自己主动进行尺寸调整。简单配置一下视图的自己主动尺寸调整掩码经常就能使应用程序得到合适的行为;否则。应用程序就必须通过重载layoutSubviews方法来提供自己的实现。

  self.autoresizingMask = UIViewAutoresizingFlexibleWidth;//这个常量假设被设置,视图的宽度将和父视图的宽度一起成比例变化。否则,视图的宽度将保持不变。

  

UIViewAutoresizingNone

这个常量假设被设置,视图将不进行自己主动尺寸调整。

UIViewAutoresizingFlexibleHeight

这个常量假设被设置。视图的高度将和父视图的高度一起成比例变化。否则。视图的高度将保持不变。

UIViewAutoresizingFlexibleWidth

这个常量假设被设置。视图的宽度将和父视图的宽度一起成比例变化。否则,视图的宽度将保持不变。

UIViewAutoresizingFlexibleLeftMargin

这个常量假设被设置,视图的左边界将随着父视图宽度的变化而按比例进行调整。否则,视图和其父视图的左边界的相对位置将保持不变。

UIViewAutoresizingFlexibleRightMargin

这个常量假设被设置。视图的右边界将随着父视图宽度的变化而按比例进行调整。否则,视图和其父视图的右边界的相对位置将保持不变。

UIViewAutoresizingFlexibleBottomMargin

这个常量假设被设置,视图的底边界将随着父视图高度的变化而按比例进行调整。

否则,视图和其父视图的底边界的相对位置将保持不变。

UIViewAutoresizingFlexibleTopMargin

这个常量假设被设置。视图的上边界将随着父视图高度的变化而按比例进行调整。否则。视图和其父视图的上边界的相对位置将保持不变。


IOS是否在项目中存在,所使用的反射那点事的更多相关文章

  1. iOS dateformatter设置GMT格式时间--iOS开发系列---项目中成长的知识四

    今天在项目中开始接手客户端的签名这个模块,签名这个会在项目结束过后再单独写一下自己的心得! 今天讲讲在签名的过程中我们需要向服务器传送一个Date值,格式要求是格林威治时间,也就是GMT时间! 格式要 ...

  2. iOS总结:项目中的各种小坑汇总

    一.字符串转JSON 在网络请求时,如果服务端返回的是字符串,那么就需要我们自己封装一个类,将请求下来的字符串转换成json对象,从而存入模型中. 注意: 字符串中如果含有一些特殊转意符(如\n.\t ...

  3. iOS 清理Xcode项目中没有使用到的图片资源和类文件

    接手到一个旧的项目,但是发现里面有太多的无用资源,包括升级app后,一些无用的图片资源并没有被删掉,导致app在打包成ipa包以后,文件变大.手边这个项目IM要更换成环信的IM,之前的一些旧的SDK, ...

  4. iOS 控制section不悬停 --- iOS开发系列 ---项目中成长的知识八

    一般情况下,tableview中的section是会默认不随着tableview的滚动而滚动的,而是会等到属于这个section的cell滑完过后,然后往上顶(不知道大家能不能听懂=_=!) 有些时候 ...

  5. iOS UIView中的坐标转换convertPoint --- iOS开发系列 ---项目中成长的知识六

    如果你的UITableViewCell里面有一个Button需要响应事件,你会怎么做? 在Controller中使用 button父类的父类?   例如:UITableViewCell *parent ...

  6. iOS HmacSHA1加密 和 MD5 Base64加密 --iOS开发系列---项目中成长的知识五

    项目中开发中需要对一些数据进行加密后和服务器验证是否是我们客户端发出的请求! 方案是服务器定的,使用HmacSHA1加密和MD5 Base64加密 加密过程比较复杂 1.获取格林威治时间 2.用bas ...

  7. 设置tableview的滚动范围--iOS开发系列---项目中成长的知识三

    设置tableview的滚动范围 有时候tableview的footerview上的内容需要向上拖动界面一定距离才能够看见, 项目中因为我需要在footerviw上添加一个按钮,而这个按钮又因为这个原 ...

  8. iOS:消除项目中警告

    引言: 在iOS开发过程中, 我们可能会碰到一些系统方法弃用, weak.循环引用.不能执行之类的警告. 有代码洁癖的孩子们很想消除他们, 今天就让我们来一次Fuck 警告!! 首先学会基本的语句: ...

  9. IOS多态在项目中的应用

    今天我们讲述一个知识点(大家可能遗漏的) 多态是面试程序设计(OOP)一个重要特征,但在iOS中,可能比较少的人会留意这个特征,实际上在开发中我们可能已经不经意的使用了多态.比如说: 有一个table ...

  10. 把所有界面的状态栏字体颜色设置为白色--iOS开发系列---项目中成长的知识一

    第一步: 在info.plist中 View controller-based status bar appearance这个属性设置为 View controller-based status ba ...

随机推荐

  1. HIbernate学习笔记2 之 主键生成方式

    一.hibernate主键生成方式: 1.常用方式:mysql:自增长生成主键(identity) <generator class="identity"> </ ...

  2. 算法入门系列1:k-means

    k-means是一种无监督学习算法,用于聚类. 下图(来自http://www.cnblogs.com/jerrylead/archive/2011/04/06/2006910.html)展示了k-m ...

  3. 如何生成[0,maxval]范围内m个随机整数的无重复的有序序列

    在这里我们将待生成的数据结构称为IntSet,接口定义如下: class IntSetImp { public: IntSetImp(int maxelements,int maxval); void ...

  4. SEO页面标题Title的优化

    我在一个月前改过页面标题(Title),随后表现是:百度网页快照4天不更新,Google正常.而我仅仅是改了两个词组而已.在建博初期,修改Title的最频繁的时期,下面卢松松就我经历的修改Title过 ...

  5. sql中where和having的区别

    “Where” 是一个约束声明,使用Where来约束来自数据库的数据,Where是在结果返回之前起作用的,且Where中不能使用聚合函数. “Having”是一个过滤声明,是在查询返回结果集以后对查询 ...

  6. SpringBoot学习:整合Mybatis,使用HikariCP超高性能数据源

    一.添加pom依赖jar包: <!--整合mybatis--> <dependency> <groupId>org.mybatis.spring.boot</ ...

  7. [解决] python WindowsError: [Error 3]

    python 运行出错 WindowsError: [Error ] : 'D:\\\xe7\x81\xab\xe8\xbd\xa6\xe9\x87\x87\xe9\x9b\x86\xe5\x99\x ...

  8. thinkphp的where方法的使用

    1.Thinkphp中where()条件的使用 总是有人觉得,thinkphp的where()就是写我要进行增加.查询.修改.删除数据的条件,很简单的,其实我想告诉你,where()是写条件语句的,但 ...

  9. RUP你知道多少?

    RUP 相信学UML的同学,对此都很耳熟,当然也眼熟,可是,对于RUP,你了解多少呢? 首先,什么是RUP? RUP是Rational UnifiedProcess,统一软件开发过程,是一个面向对象且 ...

  10. [BZOJ4003][JLOI2015]城池攻占(左偏树)

    这题有多种做法,一种是倍增预处理出每个点往上走2^i步最少需要的初始战斗力,一种是裸的启发式合并带标记splay. 每个点合并能攻占其儿子的所有骑士,删去所有无法攻占这个城市的骑士并记录答案. 注意到 ...