【iOS开发系列】NSObject方法介绍
NSObject是OC中的基类,全部类都继承于此,这里面也给我们提供了非常多与“类”和“方法”相关的方法,本文将解说几个非常有用的方法。
正文:
Person.h
#import <Foundation/Foundation.h>
@interface Person : NSObject
@end</span>
Student.h
#import "Person.h"
// 继承Person类
@interface Student : Person
- (void)test1;
- (void)test2:(NSString *)string;
@end</span>
MyProtocol.h
#import <Foundation/Foundation.h>
@protocol MyProtocol
@end</span>
【1】推断student是否是Person类的对象
// - (BOOL)isMemberOfClass:(Class)aClass;
[student isMemberOfClass:[Person class]];
【2】推断student是否是Person类或子类的对象
// - (BOOL)isKindOfClass:(Class)aClass;
[student isKindOfClass:[Person class]];
[student isKindOfClass:[Person class]];
【3】推断student是否遵循MyProtocol协议(也能够用类调用,推断该类是否遵循)
// - (BOOL)conformsToProtocol:(Protocol *)aProtocol;
[student conformsToProtocol:@protocol(MyProtocol)];
// 或者使用类方法
// + (BOOL)conformsToProtocol:(Protocol *)protocol;
[Student conformsToProtocol:@protocol(MyProtocol)];
[student conformsToProtocol:@protocol(MyProtocol)]; // 或者使用类方法
// + (BOOL)conformsToProtocol:(Protocol *)protocol;
[Student conformsToProtocol:@protocol(MyProtocol)];
【4】推断student的test1方法是否响应(即:是否声明并实现了test1方法)
// - (BOOL)respondsToSelector:(SEL)aSelector;
[student respondsToSelector:@selector(test1)];
[student respondsToSelector:@selector(test1)];
【5】间接调用student的test1方法(test1无參数)
// - (id)performSelector:(SEL)aSelector;
[student performSelector:@selector(test1)];
[student performSelector:@selector(test1)];
【6】间接调用student的test2方法(test2有一个參数)
// - (id)performSelector:(SEL)aSelector withObject:(id)object;
[student performSelector:@selector(test2:) withObject:@"123"];
// 最多带两个參数
//- (id)performSelector:(SEL)aSelector withObject:(id)object1 withObject:(id)object2;
[student performSelector:@selector(test2:) withObject:@"123"]; // 最多带两个參数
//- (id)performSelector:(SEL)aSelector withObject:(id)object1 withObject:(id)object2;
【7】延迟2s调用student的test1方法
(在命令行没有延迟效果,由于命令行运行完后就退出main函数了 ,在IOS部分main函数一直在运行。所以能够看到延迟效果)
<span style="font-family:SimHei;">// - (void)performSelector:(SEL)aSelector withObject:(id)anArgument afterDelay:(NSTimeInterval)delay;
// delay单位为(秒)
[student performSelector:@selector(test2:) withObject:@"123" afterDelay:2];</span>
【iOS开发系列】NSObject方法介绍的更多相关文章
- iOS开发系列--Swift进阶
概述 上一篇文章<iOS开发系列--Swift语言>中对Swift的语法特点以及它和C.ObjC等其他语言的用法区别进行了介绍.当然,这只是Swift的入门基础,但是仅仅了解这些对于使用S ...
- iOS开发系列--通知与消息机制
概述 在多数移动应用中任何时候都只能有一个应用程序处于活跃状态,如果其他应用此刻发生了一些用户感兴趣的那么通过通知机制就可以告诉用户此时发生的事情.iOS中通知机制又叫消息机制,其包括两类:一类是本地 ...
- iOS开发系列--数据存取
概览 在iOS开发中数据存储的方式可以归纳为两类:一类是存储为文件,另一类是存储到数据库.例如前面IOS开发系列-Objective-C之Foundation框架的文章中提到归档.plist文件存储, ...
- iOS开发系列--网络开发
概览 大部分应用程序都或多或少会牵扯到网络开发,例如说新浪微博.微信等,这些应用本身可能采用iOS开发,但是所有的数据支撑都是基于后台网络服务器的.如今,网络编程越来越普遍,孤立的应用通常是没有生命力 ...
- iOS开发系列--让你的应用“动”起来
--iOS核心动画 概览 在iOS中随处都可以看到绚丽的动画效果,实现这些动画的过程并不复杂,今天将带大家一窥iOS动画全貌.在这里你可以看到iOS中如何使用图层精简非交互式绘图,如何通过核心动画创建 ...
- iOS开发系列--并行开发其实很容易
--多线程开发 概览 大家都知道,在开发过程中应该尽可能减少用户等待时间,让程序尽可能快的完成运算.可是无论是哪种语言开发的程序最终往往转换成汇编语言进而解释成机器码来执行.但是机器码是按顺序执行的, ...
- iOS开发系列--让你的应用“动”起来
--iOS核心动画 概览 在iOS中随处都可以看到绚丽的动画效果,实现这些动画的过程并不复杂,今天将带大家一窥iOS动画全貌.在这里你可以看到iOS中如何使用图层精简非交互式绘图,如何通过核心动画创建 ...
- 【转】iOS开发系列--数据存取
原文: http://www.cnblogs.com/kenshincui/p/4077833.html#SQLite 概览 在iOS开发中数据存储的方式可以归纳为两类:一类是存储为文件,另一类是存储 ...
- IOS开发系列 --- 核心动画
原始地址:http://www.cnblogs.com/kenshincui/p/3972100.html 概览 在iOS中随处都可以看到绚丽的动画效果,实现这些动画的过程并不复杂,今天将带大家一窥i ...
- iOS开发系列--让你的应用“动”起来【转载】
概览 原文链接:http://www.cnblogs.com/kenshincui/p/3972100.html 在iOS中随处都可以看到绚丽的动画效果,实现这些动画的过程并不复杂,今天将带大家一窥i ...
随机推荐
- 【1】Jdk1.8中的HashMap实现原理
HashMap概述 HashMap是基于哈希表的Map接口的非同步实现.此实现提供所有可选的映射操作,并允许使用null值和null键.此类不保证映射的顺序,特别是它不保证该顺序恒久不变. 内部实现 ...
- [ NOIP 1998 ] TG
\(\\\) \(\#A\) 车站 火车从第\(1\)站开出,上车的人数为\(a\),然后到达第\(2\)站,在第\(2\)站有人上.下车,但上.下车的人数相同,因此在第\(2\)站开出时(即在到达第 ...
- 《Java编程的逻辑》第二部分 面向对象
- printFinal用法示例
printFinal是一个基于jQuery的打印插件,支持打印预览,使用很简单,废话不多多说,直接上代码. <!DOCTYPE html PUBLIC "-//W3C//DTD XHT ...
- html——细线表格
细线: 1.table表格设置背景色 2.table中设置单元格距离 3.tr标签设置另外一种背景色 <!DOCTYPE html> <html> <head lang= ...
- CSS——img
img标签初始化:在低版本的ie浏览器会自带边框,所以建议border:0px.
- copy.c实现
#cat copy.c #include <stdio.h> #include <stdlib.h> #include <string.h> int copyFil ...
- sysbench_cpu
5 core : 25.2848s [root@jiangyi01.sqa.zmf /home/ahao.mah/ALIOS_QA/tools/sysbench] #sysbench --num-th ...
- uva 1587(Box UVA - 1587)
题目大意是给定6个数对,每个数对代表一个面的长和宽,判断这6个面是否能构成一个长方体. 这种题一看很复杂,但是只要不想多了实际上这就是一个水题... 首先说明一下判断的思路: 1.长方体是有三个对面的 ...
- 66.零停机下reindex
主要知识点: 理解reindex的使用场景和必要性 学会reindex 一.理解reindex的使用场景和必要性 假设:在某一个index中依靠dynamic mapping插入数据, ...