NSObject常用方法 和反射
来源:互联网 发布:windows安装hadoop2.8 编辑:程序博客网 时间:2024/05/20 15:41
一. NSObject 常用方法
1. 判断一个对象是否属于某个类或子类
[对象 isKindOfClass:[类名]]; 返回 BOOL 值
2. isMemberOfClass判断对象是否属于某个类(不包括子类)
[[对象名 isMemberOfClass: [类名 class]]; 返回 BOOL 值
3. 判断对象是否实现了 aProtocol 协议
-(BOOL)conformsToProtocol: (Protocol)aProtocol;
4. 判断对象是否拥有参数提供的方法
– (BOOL)respondsToSelector:(SEL)aSelector;
5.延迟调用参数提供的方法,方法所需参数用 withObject 传入
-(void)performSelector: (SEL)aSelector withObject: (id)anArgument afterDelay: (NSTimeInterval)delay;
二.反射
1.类名的反射
NSString*str = @”Person”;
Classclass = NSClassFromString(str);
Person*person = [[class alloc]init];
[personrelease];
2.Class变成字符串
NSString*name = NSStringFromClass([Person class]);
3.方法的反射
NSString*method = @”test”;
SEL selector= MSSelectorFromString(method);
[personperSelector: (selector)];
1. 将 SEL 转化为字符串
NSStringFromSelector(@selector(setName));
三 Copy 的使用
1.copy的目的:改变副本的时候不会影响原对象
2.深拷贝:内容拷贝,源对象和副本指向的是不同的两个对象.源对象引用计数器不变,副本计数器设置为1.
3.浅复制:指针拷贝,源对象和副本指向的是同一个对象,对象的引用计数器+1,其实相当于做了一次 retain 操作.
只有不可变对象创建不可变副本(copy)才是浅复制,其他都深复制.
4.一个对象使用 copy 或 mutableCopy 方法可以创建对象的副本
5.copy-需要先实现 NSCoppying 协议,创建的是不可变副本(如 NSString,NSArray,NSDictionary)
6.mutaleCopy-需要先实现NSMutableCopying 协议,创建得到是可变副本(如 NSMutableString,NSMutableArray,NSMutableDictionary)
复制的时候,复制的结果与源对象无关,与复制的方式有关.
#import <Foundation/Foundation.h>#import "Student.h"#import "GoodStudent.h"// copy语法的目的:改变副本的时候,不会影响到源对象#pragma mark 演示字符串的拷贝(深拷贝)// 深拷贝:内容拷贝,会产生新的对象。新对象计数器置为1,源对象计数器不变。void stringMutableCopy() { // string:1 NSString *string = [[NSString alloc] initWithFormat:@"age is %i", 10]; // 产生了一个新的对象,计数器为1。源对象的计数器不变。 // str:1 // string:1 NSMutableString *str = [string mutableCopy]; //NSLog(@"str:%zi", [str retainCount]); //NSLog(@"string:%zi", [string retainCount]); // str和string不是相同对象 // NSLog(@"%i", str == string); [str appendString:@" abcd"]; NSLog(@"string:%@", string); NSLog(@"str:%@", str); // str:0 [str release]; // string:0 [string release];}#pragma mark 演示字符串的拷贝(浅拷贝)// 只有一种情况是浅拷贝:不可变对象调用copy方法时// 浅拷贝:指针拷贝,不会产生新的对象。源对象计数器+1。void stringCopy() { NSString *string = [[NSString alloc] initWithFormat:@"age is %i", 10]; NSLog(@"%zi", [string retainCount]); // copy产生的是不可变副本,由于源对象本身就不可变,所以为了性能着想,copy会直接返回源对象本身 // 源对象计数器会+1 // 在浅拷贝情况下,copy其实就相当于retain NSString *str = [string copy]; NSLog(@"%zi", [string retainCount]); // NSLog(@"%i", str == string); [str release]; [string release];}#pragma mark 可变字符串的copy(深拷贝)void mutableStringCopy() { NSMutableString *string = [NSMutableString stringWithFormat:@"age is %i", 10]; // 会产生一个新对象,str计数器为1 NSString *str = [string copy]; [str release];}#pragma mark 可变字符串的MutableCopy(深拷贝)void mutableStringMutableCopy() { NSMutableString *string = [NSMutableString stringWithFormat:@"age is %i", 10]; // 会产生一个新对象,str计数器为1 NSMutableString *str = [string mutableCopy]; [str appendString:@"1234"]; NSLog(@"str:%@", str); NSLog(@"string:%@", string); [str release];}
- NSObject常用方法 和反射
- NSObject常用方法 和 常用的一些类的反射
- NSObject常用方法 和 常用的一些类的反射
- NSObject常用方法 和 常用的一些类的反射
- NSObject一些比较常用的方法和简单的反射
- ObjectC----NSObject常用方法和OC反射机制
- NSObject和反射
- NSObject和反射 --foundation
- foundation-NSObject和反射
- NSObject的常用方法
- NSObject常用方法
- NSObject中的常用方法
- NSObject--NSDate常用方法
- NSObject中的常用方法
- NSObject中常用的方法
- NSObject不常用方法汇总
- Foundation框架(15)——NSObject的常用方法、OC中的反射
- NSObject 类的反射,方法反射(十五)
- Fedora22安装搜狗输入法
- Spring中的JDBCTemplate使用(非常详细的配置过程)
- 不浮夸,20本大数据相关图书,只给你实用可依赖的技术
- Android 对ScrollView滚动监听,实现美团、大众点评的购买悬浮效果
- SpringMVC拦截器
- NSObject常用方法 和反射
- Android项目针对libs(armeabi,armeabi-v7a,x86)进行平台兼容
- Spring架构使用JdbcTemplate进行数据库功能开发
- java生成word
- ubuntu笔记——su:认证失败
- dubbo接口address从diamond获取按spring的BeanPostProcessor代理实现
- UC浏览器新版走新闻路线,酷似今日头条,腾讯模式再现!
- iOS8新特性之---- UIAlertController解析
- springMVC详细配置+Mysql+jdbcTemplate实现分页功能