【iOS開發系列】NSObject方法介紹
阿新 • • 發佈:2017-06-27
ati ber oid ring cto rgb dst -s 推斷
【2】推斷student是否是Person類或子類的對象
【3】推斷student是否遵循MyProtocol協議(也能夠用類調用,推斷該類是否遵循)
【4】推斷student的test1方法是否響應(即:是否聲明並實現了test1方法)
【5】間接調用student的test1方法(test1無參數)
【6】間接調用student的test2方法(test2有一個參數)
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]];
【3】推斷student是否遵循MyProtocol協議(也能夠用類調用,推斷該類是否遵循)// - (BOOL)conformsToProtocol:(Protocol *)aProtocol;
[student conformsToProtocol:@protocol(MyProtocol)];
// 或者使用類方法
// + (BOOL)conformsToProtocol:(Protocol *)protocol;
[Student conformsToProtocol:@protocol(MyProtocol)];
【4】推斷student的test1方法是否響應(即:是否聲明並實現了test1方法)// - (BOOL)respondsToSelector:(SEL)aSelector;
[student respondsToSelector:@selector(test1)];
【5】間接調用student的test1方法(test1無參數)// - (id)performSelector:(SEL)aSelector;
[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;
【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方法介紹