标签:
这是一个QQ密码登陆地址和密码同时被修改时,通知用户QQ账号出现问题
该题难度主要在于判断监控的两次数据都是被修改的
有两种方案:
①定义一个可变的数组,把每次监控到的新旧数据添加进去,进行对比
②定义一个变量,每修改一次,该变量就自加一次,判断为2时,通知用户
(1)main函数
// main.m
// QQ被盗
//
// Created by 非凡程序员 on 15/5/27.
// Copyright (c) 2015年 非凡程序员. All rights reserved.
//
#import <Foundation/Foundation.h>
#import "Person.h"
#import "QQ.h"
int main(int argc, const char * argv[]) {
@autoreleasepool {
// insert code here...
NSLog(@"Hello, World!");
Person * suiping =[[Person alloc]init];
[suiping setValue:@"岁平" forKey:@"name"];
QQ * qq=[[QQ alloc]init];
[qq setValue:@"574829290" forKey:@"number"];
[qq setValue:@"mimaaaaa" forKey:@"passworld"];
[qq setValue:@"西安" forKey:@"location"];
//给该可变数组分配长度
suiping.array=[NSMutableArray arrayWithCapacity:10];
[suiping setValue:qq forKey:@"qq"];
//注册
[qq addObserver:suiping forKeyPath:@"passworld" options:NSKeyValueObservingOptionNew | NSKeyValueObservingOptionOld context:nil];
[qq addObserver:suiping forKeyPath:@"location" options:NSKeyValueObservingOptionNew | NSKeyValueObservingOptionOld context:nil];
//改值
[qq setValue:@"hahhah" forKey:@"passworld"];
// [qq setValue:@"hahhah" forKey:@"passworld"];
[qq setValue:@"西安" forKey:@"location"];
//移除
[qq removeObserver:suiping forKeyPath:@"passworld"];
[qq removeObserver:suiping forKeyPath:@"location"];
}
return 0;
}
(2)Person.m 文件
//
// Person.m
// QQ被盗
//
// Created by 非凡程序员 on 15/5/27.
// Copyright (c) 2015年 非凡程序员. All rights reserved.
//
#import "Person.h"
@implementation Person
//回调
-(void) observeValueForKeyPath:(NSString *)keyPath ofObject:(id)object change:(NSDictionary *)change context:(void *)context
{
NSString *xin=[change valueForKeyPath:NSKeyValueChangeNewKey];
NSString *old=[change valueForKeyPath:NSKeyValueChangeOldKey];
//给可变数组添加元素
[_array addObject:xin];
[_array addObject:old];
//第一种方案 (重点)
//判断
if ([_array count]==4) {
if ([_array[0] isEqualToString: _array[1]] || [_array[2] isEqualToString: _array[3]]) {
NSLog(@"安全");
}
else
{
NSLog(@"危险");
}
}
//第二种方案 (重点)
// if ([xin isEqualToString: old])
// {
// NSLog(@"QQ安全");
// }
// else
// {
// self.error++;
// if (self.error==2)
// {
// NSLog(@"有人异地(%@)修改密码,请注意",xin);
// }
// }
//
}
@end
标签:
原文地址:http://my.oschina.net/u/2366900/blog/420759