instancesRespondToSelector与respondsToSelector的区别   Test1.h @interface Test1 : NSObject - (void)objectFun; + (void)classFun; @end Test1.m @implementation Test1 - (void)objectFun { NSLog(@"object function"); } + (void)classFun { NSLog(@"class…
一.performSelector调用和直接调用区别 下面两段代码都在主线程中运行,我们在看别人代码时会发现有时会直接调用,有时会利用performSelector调用,今天看到有人在问这个问题,我便做一下总结, [delegate imageDownloader:self didFinishWithImage:image]; [delegate performSelector:@selector(imageDownloader:didFinishWithImage:)withObject:se…
在Swift语言中,协议定义类或结构体应该遵守的变量和方法集合,如下所示,这个一个标准的协议的声明: protocol NSObjectProtocol { func isEqual(object: AnyObject?) -> Bool var hash: Int { get } var superclass: AnyClass? { get } func `self`() -> Self! func isProxy() -> Bool func isKindOfClass(aClas…
一.视图切换类型介绍 在storyboard中,segue有几种不同的类型,在iphone和ipad的开发中,segue的类型是不同的. 在iphone中,segue有:push,modal,和custom三种不同的类型,这些类型的区别在与新页面出现的方式. 而在ipad中,有push,modal,popover,replace和custom五种不同的类型. modal 模态转换   最常用的场景,新的场景完全盖住了旧的那个.用户无法再与上一个场景交互,除非他们先关闭这个场景.是在viewCon…
- (BOOL)respondsToSelector:(SEL)aSelector; 用来判断是否有以某个名字命名的方法 +(BOOL) instancesRespondToSelector: selector 用来判断实例是否有以某个名字命名的方法. 和上面一个不同之处在于, 前面这个方法可以用在实例和类上,而此方法只能用在类上.…
-(BOOL) isKindOfClass: classObj 用来判断是否是某个类或其子类的实例 -(BOOL) isMemberOfClass: classObj 用来判断是否是某个类的实例 -(BOOL) respondsToSelector: selector 用来判断是否有以某个名字命名的方法(被封装在一个selector的对象里传递) +(BOOL) instancesRespondToSelector: selector 用来判断实例是否有以某个名字命名的方法. 和上面一个不同之处…
1.判断某个类是否实现了某方法: A *a =[[A alloc] autorelease]; if([a respondsToSelector:@selector(methodName)]){ //do something }else{ //do other something } 2.判断某个类是否实现了某协议: A *a =[[A alloc] autorelease]; if([a conformsToProtocol:@protocol(protocolName)]) { //do s…
id 被成为万能指针,也就是可以指向任何对象. NSObject * 本身就是定义指向NSObject类型的指针. 那么这两者有什么区别吗? 这两者都是既可以作为返回值,又可以作为变量修饰.而其主要区别则在于id修饰的变量不遵循<NSObject>协议.这在实现代理模式中会体现出其区别,例如在调用代理方法时会先判断该代理是否能够响应某个方法  [obj respondsToSelector:]就定义在NSObject协议中. 那么,苹果后来为什么有使用instancType呢? 我觉得主要原因…
今天在准备出笔试题的过程中随便搜了一下其他的笔试题,看到其中一个就是关于performSelector与直接调用的区别. 个人感觉这其实是一个陷阱题,因为大部分应用场景下,用哪一种都可以,可以说是没有区别的,但其实又有一些细节上的区别. 比如说,假如有如下代码: - (void)doTest { Student* student = [[Student alloc] init]; [student performSelector:@selector(doSomething)]; [student…
respondsToSelector相关的方法 : -(BOOL) isKindOfClass: classObj 用来判断是否是某个类或其子类的实例 -(BOOL) isMemberOfClass: classObj 用来判断是否是某个类的实例 -(BOOL) respondsToSelector: selector 用来判断是否有以某个名字命名的方法(被封装在一个selector的对象里传递) +(BOOL) instancesRespondToSelector: selector 用来判断…