1.網(wǎng)絡(luò)數(shù)據(jù)使用token加密,當(dāng)token失效時(shí)候,此時(shí)發(fā)出一個(gè)請(qǐng)求,由于網(wǎng)絡(luò)慢,還未接受到后臺(tái)返回token失效的結(jié)果,又給后臺(tái)發(fā)出去一個(gè)請(qǐng)求,這樣導(dǎo)致了后臺(tái)返回了2次token失效給客戶端;從而導(dǎo)致了客戶端請(qǐng)求了2次token,會(huì)導(dǎo)致加解密的時(shí)候token不一致。怎么解決?
方式一:服務(wù)器緩存同一個(gè)token一段時(shí)間
方式二:客戶端綁定一個(gè)uuid,服務(wù)器判斷連續(xù)請(qǐng)求token,并且uuid一致,返回同一個(gè)token
2.推送通知可以 查詢當(dāng)前通知欄還有幾條用戶沒(méi)點(diǎn)擊的推送消息嗎;有時(shí)候通知欄已經(jīng)沒(méi)有推送消息,但是應(yīng)用badgeNumber并沒(méi)有清零。如果直接調(diào)用 UIApplication setbadgeNumber = 0,也會(huì)把用戶沒(méi)點(diǎn)擊的推送消息(遠(yuǎn)程推送的消息)給清零,我想在通知欄完全沒(méi)有推送消息的時(shí)候清零badgeNumber, 這種情況如何解決?
3.一個(gè)view 添加多個(gè)子圖層,是不是無(wú)法判斷出點(diǎn)擊事件處于哪個(gè)子layer?
//一個(gè)view 添加多個(gè)子圖層,是不是無(wú)法判斷出點(diǎn)擊事件處于哪個(gè)子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));
}
}
}
···已解決:
對(duì)于不規(guī)則的layer,使用 layer.presentationLayer hitTest: 不奏效;
應(yīng)該使用對(duì)應(yīng)的 bezierPath containsPoint:來(lái)判斷是否在繪制的圖形內(nèi)。
-(void)tap:(UITapGestureRecognizer *)tap{
CGPoint point = [tap locationInView:self];
for (HJFan *layer in self.layer.sublayers) {
// HJFan * layer1 = (HJFan*)[layer.presentationLayer hitTest:point];
//對(duì)于不規(guī)則的layer,使用 layer.presentationLayer hitTest: 不奏效;應(yīng)該使用對(duì)應(yīng)的 bezierPath containsPoint:。
BOOL ret = [layer.bezierPath containsPoint:point];
if (ret) {
NSLog(@"fanTag :%zd",layer.fanTag);
break;
}
}
}