iOS一些实用技术代码

/*单例*/

+ (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
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值