iOS一些实用技术代码

IOS 专栏收录该内容
29 篇文章 0 订阅

/*单例*/

+ (instance)sharedInstance

{

static dispatch_once_t predicate;

static id instanceObj = ni;

dispatch_once(&predicate, ^{

instanceObj =[ [self alloc] init];

});

return instanceObj;

}

 

 

/*类,方法,协议*/

//Class反射

NSString classStr = NSStringFromClass(objClass);

Class classObj = NSClassFromString(classStr);

 

//SEL反射

NSString selStr = NSStringFromSelector(selectorObj);

SEL selectorObj = NSSelctorFromString(selStr);

 

//判断某个类是否实现了某协议

[classObj conformsToProtocol:@protocol(protocolxxx)];

//判断类是否响应某方法

[classObj respondsToSelector:selectorxxx];

 

//获取类下某方法

Method inm = class_getClassMethod([UIImage class], @selector(imageNamed:));

//方法替换

method_exchangeImplementations(inm, inmNew);

 

/*Block*/

success:(void (^)(id responseObj))success

- (void)blockTest:(void(^)(NSString *str))block{ }

[self blockTest:^(NSString *str) { }];

typedef void (^blockHandle)(id obj);

 

 

/*多线程*/

//GCD

dispatch_async(dispatch_get_main_queue(), ^{

});

dispatch_async(dispatch_get_global_queue(DISPATCH_QUEUE_PRIORITY_DEFAULT, 0), ^{

});

 

//NSOperation NSOperationQueue

@interface opClass : NSOperation

@end

 

@implementation opClass

-(void)main

{

xxxx

}

@end

 

opClass *opObj = [[opClass alloc] init];

NSOperationQueue *opq = [[NSOperationQueue alloc] init];

[opq addOperation:opObj];

//队列中的op并发执行

//线程锁可以用 NSLock 之类,  操作前先lock,操作完unlock

//串行 1.setMaxConcurrentOperationCount,设置为1或 operation addDependency 设置依赖

 

//Hook,第三方库 Aspects

    [UIView aspect_hookSelector:@selector(layoutSubviews)

                    withOptions:AspectPositionBefore

                     usingBlock:^(id<AspectInfo> info) {

                     }

                    error:nil];

  • 0
    点赞
  • 0
    评论
  • 0
    收藏
  • 一键三连
    一键三连
  • 扫一扫,分享海报

©️2021 CSDN 皮肤主题: 大白 设计师:CSDN官方博客 返回首页
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、C币套餐、付费专栏及课程。

余额充值