ios 判断method是否第一次调用

一、需求:在第一次调用method1时调用另外一个method2。再次调用method1时不再调用method2;
二、解决:
方法1、添加全部变量 很简单,缺点要维护全局变量。 如果对象里有多个这样的需求,需要添加多个变量。不方便。
方法2、添加NSObject+addtion.h
代码:

#import 

#define First_ly [self firstWithSEL:_cmd]
#define dispatch_first_ly(block) if(First_ly){block();}

@interface NSObject (LYAddtion)
@property(nonatomic,strong) id tempObject_ly;
-(BOOL)firstWithSEL:(SEL)selector;
@property(nonatomic,strong) NSMutableArray *firstCachArray;
@end
#import "NSObject+LYAddtion.h"
#import 
@implementation NSObject (LYAddtion)
-(BOOL)firstWithSEL:(SEL)selector{
    if (self.firstCachArray == nil) {
        self.firstCachArray = [[NSMutableArray alloc] init];
    }
    if ([self.firstCachArray containsObject:NSStringFromSelector(selector)])   {
        return NO;
    }else{
        [self.firstCachArray addObject:NSStringFromSelector(selector)];
        return YES;
    }
}

-(void)setFirstCachArray:(NSMutableArray *)firstCachArray{
    objc_setAssociatedObject(self, @selector(firstCachArray), firstCachArray, OBJC_ASSOCIATION_RETAIN_NONATOMIC);
}

-(NSMutableArray *)firstCachArray{
    return objc_getAssociatedObject(self, _cmd);
}

@end

三、使用

  if (First_ly) {
        NSLog(@"第一次调用执行");
    }

或者

  dispatch_first_ly(^{
        NSLog(@"第一次调用执行");
    })

为了便于开发写了个代码块:使用方便

ios 判断method是否第一次调用_第1张图片
QQ20171030-164122-HD.gif

代码块可参考:http://www.jianshu.com/p/9409d3310fba

https://github.com/GitHubXuLiying/First

你可能感兴趣的:(ios 判断method是否第一次调用)