1.网络数据使用token加密,当token失效时候,此时发出一个请求,由于网络慢,还未接受到后台返回token失效的结果,又给后台发出去一个请求,这样导致了后台返回了2次token失效给客户端;从而导致了客户端请求了2次token,会导致加解密的时候token不一致。怎么解决?
方式一:服务器缓存同一个token一段时间
方式二:客户端绑定一个uuid,服务器判断连续请求token,并且uuid一致,返回同一个token
2.推送通知可以 查询当前通知栏还有几条用户没点击的推送消息吗;有时候通知栏已经没有推送消息,但是应用badgeNumber并没有清零。如果直接调用 UIApplication setbadgeNumber = 0,也会把用户没点击的推送消息(远程推送的消息)给清零,我想在通知栏完全没有推送消息的时候清零badgeNumber, 这种情况如何解决?
3.一个view 添加多个子图层,是不是无法判断出点击事件处于哪个子layer?
//一个view 添加多个子图层,是不是无法判断出点击事件处于哪个子layer?
-(void)tap:(UITapGestureRecognizer *)tap{
CGPoint point = [tap locationInView:self];
// NSLog(@"tap :%@",NSStringFromCGPoint(point));
NSLog(@"point :%@",NSStringFromCGPoint(point));
for (CALayer *layer in self.layer.sublayers) {
HJFan * layer1 = (HJFan*)[layer.presentationLayer hitTest:point];
if (layer1 !=nil) {
NSLog(@"fanTag :%zd",layer1.fanTag);
NSLog(@"point:%@ frame:%@",NSStringFromCGPoint(point),NSStringFromCGRect(layer1.frame));
break;
}else{
NSLog(@"point:%@ frame:%@",NSStringFromCGPoint(point),NSStringFromCGRect(layer1.frame));
}
}
}
···已解决:
对于不规则的layer,使用 layer.presentationLayer hitTest: 不奏效;
应该使用对应的 bezierPath containsPoint:来判断是否在绘制的图形内。
-(void)tap:(UITapGestureRecognizer *)tap{
CGPoint point = [tap locationInView:self];
for (HJFan *layer in self.layer.sublayers) {
// HJFan * layer1 = (HJFan*)[layer.presentationLayer hitTest:point];
//对于不规则的layer,使用 layer.presentationLayer hitTest: 不奏效;应该使用对应的 bezierPath containsPoint:。
BOOL ret = [layer.bezierPath containsPoint:point];
if (ret) {
NSLog(@"fanTag :%zd",layer.fanTag);
break;
}
}
}
网友评论