IOS是否在项目中存在,所使用的反射那点事
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是否在项目中存在,所使用的反射那点事的更多相关文章
- iOS dateformatter设置GMT格式时间--iOS开发系列---项目中成长的知识四
今天在项目中开始接手客户端的签名这个模块,签名这个会在项目结束过后再单独写一下自己的心得! 今天讲讲在签名的过程中我们需要向服务器传送一个Date值,格式要求是格林威治时间,也就是GMT时间! 格式要 ...
- iOS总结:项目中的各种小坑汇总
一.字符串转JSON 在网络请求时,如果服务端返回的是字符串,那么就需要我们自己封装一个类,将请求下来的字符串转换成json对象,从而存入模型中. 注意: 字符串中如果含有一些特殊转意符(如\n.\t ...
- iOS 清理Xcode项目中没有使用到的图片资源和类文件
接手到一个旧的项目,但是发现里面有太多的无用资源,包括升级app后,一些无用的图片资源并没有被删掉,导致app在打包成ipa包以后,文件变大.手边这个项目IM要更换成环信的IM,之前的一些旧的SDK, ...
- iOS 控制section不悬停 --- iOS开发系列 ---项目中成长的知识八
一般情况下,tableview中的section是会默认不随着tableview的滚动而滚动的,而是会等到属于这个section的cell滑完过后,然后往上顶(不知道大家能不能听懂=_=!) 有些时候 ...
- iOS UIView中的坐标转换convertPoint --- iOS开发系列 ---项目中成长的知识六
如果你的UITableViewCell里面有一个Button需要响应事件,你会怎么做? 在Controller中使用 button父类的父类? 例如:UITableViewCell *parent ...
- iOS HmacSHA1加密 和 MD5 Base64加密 --iOS开发系列---项目中成长的知识五
项目中开发中需要对一些数据进行加密后和服务器验证是否是我们客户端发出的请求! 方案是服务器定的,使用HmacSHA1加密和MD5 Base64加密 加密过程比较复杂 1.获取格林威治时间 2.用bas ...
- 设置tableview的滚动范围--iOS开发系列---项目中成长的知识三
设置tableview的滚动范围 有时候tableview的footerview上的内容需要向上拖动界面一定距离才能够看见, 项目中因为我需要在footerviw上添加一个按钮,而这个按钮又因为这个原 ...
- iOS:消除项目中警告
引言: 在iOS开发过程中, 我们可能会碰到一些系统方法弃用, weak.循环引用.不能执行之类的警告. 有代码洁癖的孩子们很想消除他们, 今天就让我们来一次Fuck 警告!! 首先学会基本的语句: ...
- IOS多态在项目中的应用
今天我们讲述一个知识点(大家可能遗漏的) 多态是面试程序设计(OOP)一个重要特征,但在iOS中,可能比较少的人会留意这个特征,实际上在开发中我们可能已经不经意的使用了多态.比如说: 有一个table ...
- 把所有界面的状态栏字体颜色设置为白色--iOS开发系列---项目中成长的知识一
第一步: 在info.plist中 View controller-based status bar appearance这个属性设置为 View controller-based status ba ...
随机推荐
- python初学-元组、集合
元组: 元组基本和列表一样,区别是 元组的值一旦创建 就不能改变了 tup1=(1,2,3,4,5) print(tup1[2]) ---------------------------------- ...
- ORM数据库查询操作之基于双下划线的跨表查询
创建表结构 from django.db import models class Book(models.Model): title=models.CharField(max_length=32) ...
- redis之(二十)redis的总结一
1 什么是Redis Redis(REmote DIctionary Server,远程数据字典服务器)是开源的内存数据库,常用作缓存或者消息队列. Redis的特点: Redis存在于内存,使用硬盘 ...
- Zabbix历史数据库迁移 及分区
https://blog.csdn.net/hkyw000/article/details/78971201?utm_source=blogxgwz6
- NOI2014 起床困难综合症 day1t1
感觉NOI题在向简单方向发展,或者说明年会难到暴呢? 直接模拟啊,枚举每个二进制数位,看经过变换之后是否为1及为1的条件即可.\( O(nlogm)\). 然后...跪了一个点,第五个死活比标准大一. ...
- CentOS7.5安装teamviwer13
1.首先到官网下载teamviewer13的rpm包 https://www.teamviewer.com/zhcn/download/linux/ 2.安装 安装依赖包 http://mirror. ...
- 【转】python 之 collections
转自:https://www.liaoxuefeng.com/wiki/001374738125095c955c1e6d8bb493182103fac9270762a000/0014110312394 ...
- Java网络编程一
1.InetAddress的应用 import java.util.List; import java.math.BigDecimal; import java.net.InetAddress; im ...
- 洛谷P3391文艺平衡树(Splay)
题目传送门 转载自https://www.cnblogs.com/yousiki/p/6147455.html,转载请注明出处 经典引文 空间效率:O(n) 时间效率:O(log n)插入.查找.删除 ...
- js相关数组迭代方法图解