1、

-(void)timetick

{

_d = 0;

NSTimer *newtime =[NSTimer scheduledTimerWithTimeInterval:1 target:self selector:@selector(printfdate:) userInfo:@"byL" repeats:YES];

}

-(void)printfdate:(NSTimer*)time1

{

NSLog(@"%d,%@",_d++,time1.userInfo);

}

[newtime invalidate];

[[NSRunLoop currentRunLoop]run];

//初始化观察

[_phone addObserver:self forKeyPath:@"price" options:NSKeyValueObservingOptionNew | NSKeyValueObservingOptionOld context:nil];

//观察到变化控制

-(void)observeValueForKeyPath:(NSString *)keyPath ofObject:(id)object change:(NSDictionary<NSString *,id> *)change context:(void *)context

{

NSNumber *num = [change objectForKey:@"new"];

NSLog(@"%@",num);

}

//发送信息

[[NSNotificationCenter defaultCenter]postNotificationName:@"pricechange" object:self userInfo:nil];

//接受信息初始化

[[NSNotificationCenter defaultCenter]addObserver:self selector:@selector(salephone) name:@"pricechange" object:nil];

//接受到信息做控制

-(void)salephone

//数组

NSArray *DATA_A =@[类,类,类,类,类];

//设置过滤条件

NSPredicate *newpre = [NSPredicate predicateWithFormat:@"age > 29"];

//过滤后保存的数组

NSArray *newarray = [DATA_A filteredArrayUsingPredicate:newpre];

@“name BEGINSWITH 'x' ”

@“name ENDSWITH 'x' ”

@“name CONTAINS 'x' ”

@“age > 29 || age < 20”

@“name like ‘?d*’ ”

2、

sql

====================================================================

创建:

打开: 数据库指针、保存地址

sqlite3_open([path UTF8String], &new_sql)

————————————————————————————————————————

创建: 数据库指针、创建指令、错误指令

(

NSString *command = @"CREATE TABLE IF NOT EXISTS UserTable (username TEXT primary key,password TEXT,age TEXT)";

)

sqlite3_exec(new_sql, [command UTF8String], NULL, NULL, &new_error)

————————————————————————————————————————

关闭: 数据库指针

sqlite3_close(new_sql);

====================================================================

插入:

打开:

————————————————————————————————————————

插入指令:

(

NSString *op = @"INSERT INTO UserTable(username,password,age) VALUES (?,?,?)";

)

准备: 数据库指针、插入指令、句柄

sqlite3_prepare(new_sql, [op UTF8String], -1, &new_stmt, NULL);

绑定: 句柄、位置、数据

sqlite3_bind_text(new_stmt, 1, [name UTF8String], -1, NULL);

下一步: 句柄

sqlite3_step(new_stmt);

结束: 句柄

sqlite3_finalize(new_stmt);

————————————————————————————————————————

关闭:

====================================================================

删除:

打开:

————————————————————————————————————————

删除指令:

(

NSString *op = @"DELETE FROM userTable WHERE userName = ?";

)

准备: 数据库指针、删除指令、句柄

sqlite3_prepare(new_sql, [op UTF8String], -1, &new_stmt, NULL);

绑定: 句柄、位置、数据

sqlite3_bind_text(new_stmt, 1, [name UTF8String], -1, NULL);

下一步: 句柄

sqlite3_step(new_stmt);

结束: 句柄

sqlite3_finalize(new_stmt);

————————————————————————————————————————

关闭:

====================================================================

选择:

打开:

————————————————————————————————————————

选择指令:

(

(1)NSString *op = @"SELECT username,password,age From UserTable where username = ?";

(2)NSString *op = @"SELECT username,password,age From UserTable";

)

准备: 数据库指针、选择指令、句柄

sqlite3_prepare(new_sql, [op UTF8String], -1, &new_stmt, NULL);

绑定: 句柄、位置、数据

(1)sqlite3_bind_text(new_stmt, 1, [selet_name UTF8String], -1, NULL);

下一步: 句柄

sqlite3_step(new_stmt);

遍历:

while (result == SQLITE_ROW)

{

char *c_name = (char *)sqlite3_column_text(new_stmt, 0);

char *c_password = (char *)sqlite3_column_text(new_stmt, 1);

char *c_age = (char *)sqlite3_column_text(new_stmt, 2);

NSString *s_name = [NSString stringWithCString:c_name encoding:NSUTF8StringEncoding];

NSString *s_password = [NSString stringWithCString:c_password encoding:NSUTF8StringEncoding];

NSString *s_age = [NSString stringWithCString:c_age encoding:NSUTF8StringEncoding];

NSLog(@"%@,%@,%@",s_name,s_password,s_age);

result = sqlite3_step(new_stmt);

//NSLog(@"%d",new_stmt);

}

结束: 句柄

sqlite3_finalize(new_stmt);

————————————————————————————————————————

关闭:

====================================================================

插入变体:

更新

@"UPDATE UserTable SET password = ? where username = ?"

选择(2)变体:

排序

@“SELECT * FROM userTable ORDER BY age ASC(DESC)”

3、

@"dogs.@sum.weight"

@"dogs.@avg.weight"

@"dogs.@min.weight"

@"dogs.@max.weight"

4、

int gNumb=0;

全局变量通常用小写g来提示。

重写,父类有声明,不必再声明

[p1 isKindOfClass:[Person class]];

[p1 isMemberOfClass:[Person class]];

[p1 respondsToSelector:@selector(test)];

可变数组 copy 赋值给不可变数组。

-(NSString *)description

{

return [NSString stringWithFormat:@"%@,%lu",_name,_price];

}

==========================================================================

//编码

NSData *new_data = [s_text dataUsingEncoding:NSUTF8StringEncoding];

//解码

NSString *new_string = [[NSString alloc]initWithData:new_data encoding:NSUTF8StringEncoding];

==========================================================================

//沙盒路径

NSHomeDirectory()

//工程目录

[NSBundle mainBundle]

==========================================================================

//弄个文件管理

NSFileManager *new_File = [NSFileManager defaultManager];

//创建文件夹   path要追加文件夹名,不要后缀

[new_File createDirectoryAtPath:path withIntermediateDirectories:YES attributes:nil error:&new_error]

//创建文件   path在之前文件夹下追加“xxx.xxx”    data要编码

[new_File createFileAtPath:new_path contents:new_data attributes:nil]

//读取文件的信息 返回字典

[new_File attributesOfItemAtPath:new_path error:&new_error]

//读取单个字典的关键词

[new_dic objectForKey:@"NSFileSize"]

==========================================================================

//文件读取

NSData *newData = [fileManager contentsAtPath:filePath];

[[NSString alloc]initWithData:newData encoding:NSUTF8StringEncoding];

or

[[NSString alloc]initWithContentsOfFile:new_path encoding:NSUTF8StringEncoding error:&new_error];

//文件移动(剪切、重命名),要加上文件名和后缀”xxx.xx”

[new_File moveItemAtPath:new_path toPath:ob_add error:&new_error]

//文件复制   也要注意有文件名和后缀“xxx.xx”

[new_File copyItemAtPath:new_path toPath:ob_add_2 error:&new_error]

//文件删除   也要注意有文件名和后缀“xxx.xx”

先判断有无文件

[new_File fileExistsAtPath:ob_add_2]

删除

[new_File removeItemAtPath:ob_add_2 error:&new_error]

==========================================================================

//写入

/设置为写入模式

NSFileHandle *new_handle = [NSFileHandle fileHandleForWritingAtPath:path];

/先转码

NSString *new_string = @"hello,hello,hello,世界";

NSData *new_data = [new_string dataUsingEncoding:NSUTF8StringEncoding];

/再写入

[new_handle writeData:new_data];

//追加

/先找到最后的

[new_handle seekToEndOfFile];

/写入转码后的数据

[new_handle writeData:new_data_2];

//覆盖

/先找到偏移位

[new_handle seekToFileOffset:3];

/写入转码后的数据

[new_handle writeData:new_data_3];

//关闭操作

[new_handle closeFile];

//读取

/设置为读取模式

new_handle = [NSFileHandle fileHandleForReadingAtPath:path];

/读取所有data

NSData *read_data = [new_handle readDataToEndOfFile];

/转成字符串

NSString *read_string = [[NSString alloc]initWithData:read_data encoding:NSUTF8StringEncoding];

/设置为读取模式,否则有问题

new_handle = [NSFileHandle fileHandleForReadingAtPath:path];

/读取前几个数据

read_data = [new_handle readDataOfLength:10];

/转成字符串

ead_string = [[NSString alloc]initWithData:read_data encoding:NSUTF8StringEncoding];

//关闭操作

[new_handle closeFile];

5、

协议

@required

@optional

nonatomic

copy assign

==================================================

.h签协议

<NSCopying>

.m设置要复制的值

- (id)copyWithZone:(nullable NSZone *)zone

{

NSLog(@"复制对象调用了!");

Person *person = [[self class] allocWithZone:zone];

person.name = [_name mutableCopy];

person.age = _age;

person.bookArray = [_bookArray mutableCopy];

return person;

}

调用

Person *person2 = [person1 copy];

==================================================

.h签协议

<NSCoding>

.m设置要复制的值

- (void)encodeWithCoder:(NSCoder *)aCoder

{

[aCoder encodeObject:_name forKey:NAME];

[aCoder encodeInteger:_age forKey:AGE];

[aCoder encodeObject:_hobby forKey:HOBBY];

}

- (nullable instancetype)initWithCoder:(NSCoder *)aDecoder

{

self = [super init];

if (self)

{

self.name = [aDecoder decodeObjectForKey:NAME];

self.age = [aDecoder decodeIntegerForKey:AGE];

self.hobby = [aDecoder decodeObjectForKey:HOBBY];

}

return self;

}

调用

//地址

NSString *path = [NSHomeDirectory() stringByAppendingPathComponent:@"Desktop/di8zhangzuoue.txt"];

//归档

[NSKeyedArchiver archiveRootObject:atext toFile:path]

//读取

[NSKeyedUnarchiver unarchiveObjectWithFile:path];

==================================================

单例 共享信息

.m

static OneT *newone = nil;

+(instancetype)shalldata

{

if (newone == nil)

{

newone = [[OneT alloc]init];

newone.data_zone = [NSMutableArray array];

}

return newone;

}

调用:

OneT *one = [OneT shalldata];

OneT *two = [OneT shalldata];

==================================================

NSArray *data = [NSArray arrayWithObjects:@"zhang3",@"li4", nil];

NSString *path = [NSHomeDirectory() stringByAppendingPathComponent:@"ceshi83.txt"];

BOOL status = [NSKeyedArchiver archiveRootObject:data toFile:path];

NSLog(@"%@",status?@"成功":@"失败");

NSArray *r_data = [NSKeyedUnarchiver unarchiveObjectWithFile:path];

NSLog(@"%@",r_data);

6、

instancetype:返回与初始化类相同的类型。

-(instancetype)initWith…

{

self=[super init];

if(self)

{

}

return self;

}

-(class_A *)initwithone:(int)a other:(int)b

{

self=[super init];

if(self)

{

[self seta:a b:b ] ;

}

return self;

}

+(instancetype)robotWithName:(NSString*)r_name andage:(int)r_age

{

#if 0

return [[self alloc]initWithName:(NSString*)r_name andage:(int)r_age];

#else

Robot *new_R = [[Robot alloc]initWithName:r_name andage:r_age];

return new_R;

#endif

}

@private 私有:只有类定义内部可访问

@protected 保护:只有类本身和子类的定义里可访问

@public 公有:程序的任何位置都可访问

/** xxx */

#progame MARK xxx

[self performSelector:@selector(delaylog:) withObject:@"3秒" afterDelay:2];

[[NSRunLoop currentRunLoop]run];

7、

SET

//初始化

NSSet *set = [[NSSet alloc]initWithObjects:@“_1”,@“_2”,@“_3”,@“_4”,@“_3”, nil];

//可变初始化

NSMutableSet *mSet = [NSMutableSet set];

//可变添加对象

[mSet addObject:numobject];

//建个数组

NSArray *array = [NSArray arrayWithObjects:@“_3”,@“_4”,@“_5”, nil];

//取数组的对象初始化

NSSet *newSet = [NSSet setWithArray:array];

//又把set的对象给数组,自动消除重复

NSArray *newArray = [newSet allObjects];

//打印

NSLog(@"%ld",[newSet count]);

//任意取! 但不保证随机!

NSLog(@"%@",[set anyObject]);

//是否等价

[set isEqualToSet:newSet]

//是否包含

[newSet isSubsetOfSet:set]

ENUM

//将set的值给枚举

NSEnumerator *enumtor = [set objectEnumerator];

//将枚举里的对象一一打印

for (NSObject* obj in enumtor)

{

NSLog(@"-->%@",obj);

}

8、

日期时间

//美国的时间

NSDate *date = [[NSDate alloc]init];

//时区

NSTimeZone *myZone = [NSTimeZone systemTimeZone];

//算时差 加上时差

NSInteger interValTimer = [myZone secondsFromGMTForDate:date];

NSDate *localDate = [date dateByAddingTimeInterval:interValTimer];

NSLog(@"%@",localDate);

//明天

NSDate *date2 = [NSDate dateWithTimeIntervalSinceNow:24*60*60];

//昨天

NSDate *date2 = [NSDate dateWithTimeIntervalSinceNow:-ADAY];

NSLog(@"date2 = %@",date2);

//1970年

NSDate *date2 = [NSDate dateWithTimeIntervalSince1970:0];

NSLog(@"%@",date2);

//参考日期2001年

NSDate *date3 = [NSDate dateWithTimeIntervalSinceReferenceDate:0];

NSLog(@"%@",date3);

//nsdate -> nsstring 类型转换

NSDate *date1 = [NSDate date];

1.

NSString *date1str = date1.description; //美国的时间

2

NSDateFormatter *dateFormat1 = [[NSDateFormatter alloc]init];

2.1

[dateFormat1 setDateFormat:@"yyyy年MM月dd日 EEEE HH mm ss zz"];

2.2

[dateFormat1 setDateStyle:NSDateFormatterShortStyle];

[dateFormat1 setTimeStyle:NSDateFormatterMediumStyle];

NSString *datestr2 = [dateFormat1 stringFromDate:date1];

NSLog(@"datestr2 = %@",datestr2);

//获取所有时区的名字

NSArray *timeZoneNames =  [NSTimeZone knownTimeZoneNames];

//新建一个时区

NSTimeZone *newZone = [NSTimeZone timeZoneWithName:@"Pacific/Fiji"];

//新建一个时间格式

NSDateFormatter *dateFormat2 = [[NSDateFormatter alloc]init];

//设置该时区

[dateFormat2 setTimeZone:newZone];

//设置时间格式

[dateFormat2 setDateFormat:@"yyyy年MM月dd日 EEEE HH:mm:ss zz"];

//打印

NSString *dateString =  [dateFormat2 stringFromDate:[NSDate date]];

NSLog(@"dateString = %@",dateString);

//字符串转date

NSString *dateStr4 = @"2016年07月27日 星期三 20:16:10 GMT+12";

NSDate *date4 = [dateFormat2 dateFromString:dateStr4];

NSLog(@"%@",date4);

NSRange newrange = NSMakeRange(1,5);

NSValue *newvalue = [NSValue valueWithRange:newrange];

NSLog(@"%@",newvalue);

NSArray *newarray = [NSArray arrayWithObjects:newvalue, nil];

NSLog(@"%@",newarray);

NSRange newrange2 = [newvalue rangeValue];

NSLog(@"%lu,%lu",newrange2.location,newrange2.length);

//封装自定义的结构体

struct MyPoint

{

int x;

int y;

};

struct MyPoint mypoint;

mypoint.x = 10;

mypoint.y = 100;

NSValue *val2 = [NSValue value:&mypoint withObjCType:@encode(struct MyPoint)];

NSLog(@"%@",val2);

struct MyPoint mypoint2;

[val2 getValue:&mypoint2];

NSLog(@"mypoint2.x = %d,mypoint2.y = %d",mypoint2.x,mypoint2.y);

9、

@interface class_A:NSObject

@end

@implementation class_A

@end

@property int x;

@synthesize x;

[MyA setNumb:5]; 即使实例变量是小写,这个set后也要大写

n=[MyA numb];

[A B]  等价 A.B

[self 该.m文件的方法],找不到再去父类找

与文件.h.m同名

@interface class_A:NSObject

@end

@interface class_B:class_A

@ens

继承里,class_B里的方法的可以用

[self A的方法]

[self A的变量]

需要某文件的某些方法,可以用

@class xxx.h

如果xxx.h的某些方法访问不了,如init,还是要

#import xxx.h

重复包含的,其中一个.h可以用@class xxx(不用写.h),对应.m要#import xxx.h

同名方法优先使用class_B的方法

同名的方法,会自动判断[A set_value:(int)x]的类,如判断出A

id x;

x=任意变量、class类

@try

{

}

@catch

{

}

@finally

{

}

还有的@throw

10、

字符串:

字符串的创建

对象方法:

[[NSString alloc]init];

[[NSString alloc]initWithString:string];

[[NSString alloc]initWithFormat:@"%@",string1];

类方法:

[NSString stringWithString:string];

[NSString stringWithFormat:@"%@",string2];

字符串格式化拼接

[NSString stringWithFormat:@"%@%@",string3,string4];

字符串比较

[string3 isEqualToString:string4];

[string3 caseInsensitiveCompare:string4];

[string3 compare:string4]

字符串长度

[string length];

string.length;

字符串大小写变化

[string uppercaseString];

[string lowercaseString];

[string capitalizedString];

字符串追加

[string4 stringByAppendingString:string3];

字符串查找

[string rangeOfString:@"world"];

NSNotFound

[string hasPrefix:@“www”];

[string hasSuffix:@“com”];

字符串截取

[string substringFromIndex:2];

[string substringToIndex:5];

[string substringWithRange:range];

字符串跟基本数据类型转换

[NSString stringWithFormat:@"%d",a];

[NSString stringWithFormat:@"%f",b];

[NSString stringWithFormat:@"%c",c];

[strnum1 intValue];

[strnum2 floatValue];

const char *cc = [strchar UTF8String];

字符串取个元素

[newstring characterAtIndex:3]

字符串是否包含

[mString containsString:@"hello"];

可变字符串的创建

[[NSMutableString alloc]initWithString:string];

[[NSMutableString alloc]initWithFormat:@"%@",string];

[NSMutableString stringWithString:string];

[NSMutableString stringWithFormat:@"%@",string];

可变字符串的替换

[mString replaceCharactersInRange:NSMakeRange(2,2) withString:@"xxx"];

可变字符串的插入

[mString insertString:@"aaa" atIndex:1];

可变字符串的删除

[mString deleteCharactersInRange:NSMakeRange(1, 3)];

可变字符串的追加

[S_1 appendString:@"QAZ"];

[S_1 appendFormat:@"%@",S_1];

11、

字典的创建

NSDictionary *dic = [[NSDictionary alloc]init];

//dic = @{key:value,...};

dic = @{

@"name":@"xiaoming",

@"age":@"18",

@"sex":@"男",

@"name1":@"xiaoming"

};

对象方法:

//dic2 = @{value:key,...};

NSDictionary *dic2 = [[NSDictionary alloc]initWithObjectsAndKeys:@"xiaohong",@"name",@"20",@"age",@"男",@"sex",@"12",@"20",@"aaa",@"bbb", nil];

NSDictionary *dic3 = [[NSDictionary alloc]initWithDictionary:dic2];

类方法:

NSDictionary *dic4 = [NSDictionary dictionaryWithDictionary:dic3];

字典的长度

字典根据key获取value

[dic objectForKey:@"age"]

dic[@"age"]

字典取出所有的key

NSArray *keyArray = [dic allKeys];

字典取出所有的value

NSArray *valueArray = [dic allValues];

可变字典的创建

NSMutableDictionary *mDic1 = [NSMutableDictionary dictionary];

类方法:

NSMutableDictionary *mDic = [[NSMutableDictionary alloc]initWithObjectsAndKeys:@"xiaoming",@"name",@"19",@"age",@"男",@"sex", nil];

可变字典添加元素

[mDic setObject:@"80kg" forKey:@"weight"];

可变字典删除元素

[mDic removeObjectForKey:@"age"];

[mDic removeObjectsForKeys:array];

可变字典删除所有元素

[mDic removeAllObjects];

可变字典遍历

for (NSString *key in mDic)

{

NSLog(@"%@",mDic[key]);

}

存储

NSString *path = @"/Users/etcxm/test.plist";

[dic writeToFile:path atomically:YES];

NSArray  *A_data_R = [NSArray array];

A_data_R = [NSArray arrayWithContentsOfFile:S_add];

12、

数组的创建

NSArray *array1 = [[NSArray alloc]init];

array1 = @[@"here",@"is",@"etcxm"];

对象方法:

NSArray *array6 = [[NSArray alloc]initWithObjects:array1,array5, nil];

NSArray *array2 = [[NSArray alloc]initWithObjects:@"here",@"is",@"china", nil];

NSArray *array3 = [[NSArray alloc]initWithArray:array1];

类方法:

NSArray *array4 = [NSArray arrayWithObject:@"hello"];

NSArray *array5 = [NSArray arrayWithObjects:@"here",@"is",@"china", nil];

NSArray *array6 = [NSArray arrayWithArray:array1];

数组取下标元素

array5[2];

[array5 objectAtIndex:2];

数组的长度

array5.count

[array5 count]

数组是否包含某个元素

[array10 containsObject:@"hello”];

数组通过元素获取下标

[array10 indexOfObject:@"1123”];

NSNotFound

数组连接成字符串,字符串分割成数组

NSString *string = [array1 componentsJoinedByString:@" "];

NSArray *array2 = [string componentsSeparatedByString:@"i"];

数组访问最后一个元素

[array1 lastObject];

[array1 firstObject];

数组遍历

for (NSString *str in array1)

{

NSLog(@"->%@",str);

}

数组追加元素

NSArray *array3 = [array1 arrayByAddingObject:@"hello"];

NSArray *array4 = [array1 arrayByAddingObject:array3];

NSArray *array5 = [array1 arrayByAddingObjectsFromArray:array3];

可变数组的创建

NSMutableArray *mArray = [[NSMutableArray alloc]initWithObjects:@"hello",@"world",@"china", nil];

可变数组添加元素

[mArray addObject:@"American"];

NSArray *array = [[NSArray alloc]initWithObjects:@"hi",@"hei", nil];

[mArray addObjectsFromArray:array];

可变数组删除元素

[mArray removeAllObjects];

[mArray3 removeObject:@"here"];

[mArray3 removeObjectAtIndex:3];

[mArray3 removeLastObject];

[mArray3 removeObjectsInArray:arraytest];

[mArray3 removeObjectsAtIndexes:set1];

[mArray3 removeObject:@"here" inRange:NSMakeRange(0, 3)];

[mArray3 removeObjectsInRange:NSMakeRange(1, 4)];

可变数组交换位置

[mArray3 exchangeObjectAtIndex:0 withObjectAtIndex:3];

可变数组替换

[mArray3 replaceObjectAtIndex:0 withObject:@"objxxx"];

可变数组插入

[mArray3 insertObject:@"iiiii" atIndex:1];

可变数组遍历

int i=0;

for (NSString *str in mArray)

{

NSLog(@"%@",str);

NSLog(@"%d",i++);

}

iOS:以前笔记,未整理版。太多了,先放着吧。。。。。。。的更多相关文章

  1. iOS学习笔记-精华整理

    iOS学习笔记总结整理 一.内存管理情况 1- autorelease,当用户的代码在持续运行时,自动释放池是不会被销毁的,这段时间内用户可以安全地使用自动释放的对象.当用户的代码运行告一段 落,开始 ...

  2. iOS学习笔记总结整理

    来源:http://mobile.51cto.com/iphone-386851_all.htm 学习IOS开发这对于一个初学者来说,是一件非常挠头的事情.其实学习IOS开发无外乎平时的积累与总结.下 ...

  3. iOS 相关职位要求整理版

    在拉勾上找了20家,BOSS直聘找了10家感兴趣的在招聘 iOS 程序员的公司,把职位要求整理了一下. 初创公司一般要求1年以上开发经验,成长型或者成熟型公司一般要求最低2年以上开发经验.这里针对的是 ...

  4. Bootstrap学习笔记(未整理)

    强调class 这些class通过颜色来表示强调.也可以应用于链接,当鼠标盘旋于链接上时,其颜色会变深,就像默认的链接样式. <p class="text-muted"> ...

  5. vue笔记未整理

    全局组件 局部组件 子组件传值到父组件 父子组件传值 watch跟计算属性差不多,都会有缓存,计算属性优先 计算属性get set 对象 数组 对象 数组 不复用 改变数组 直接修改数组,页面没变化 ...

  6. iOS 实用博客整理(连载版)

    iOS 实用博客整理(连载版) 本博客为本人觉得不错的博客的暂存地,并不是本人所写. 1.iOS开发 如何适配iOS10? 2.UIWebView和WKWebView的比较和选择 3. 如何快速的开发 ...

  7. OD调试学习笔记7—去除未注册版软件的使用次数限制

    OD调试学习笔记7—去除未注册版软件的使用次数限制 本节使用的软件链接 (想自己试验下的可以下载) 一:破解的思路 仔细观察一个程序,我们会发现,无论在怎么加密,无论加密哪里,这个程序加密的目的就是需 ...

  8. OD调试6—使未注册版软件的功能得以实现

    OD调试6—使未注册版软件的功能得以实现 本节使用的软件下载链接 (想动手试验的朋友可以下载来试试) 继续开始我OD调试教程的学习笔记. 本次试验对真正的程序进行逆向.(之前的都是为破解而专门设计的小 ...

  9. iOS回顾笔记( 02 ) -- 由九宫格布局引发的一系列“惨案”

    html,body,div,span,applet,object,iframe,h1,h2,h3,h4,h5,h6,p,blockquote,pre,a,abbr,acronym,address,bi ...

随机推荐

  1. C# DateTime与时间戳转换

    C# DateTime与时间戳的相互转换,包括JavaScript时间戳和Unix的时间戳. 1. 什么是时间戳 首先要清楚JavaScript与Unix的时间戳的区别: JavaScript时间戳: ...

  2. MIP改造常见问题二十问

    在MIP推出后,我们收到了很多站长的疑问和顾虑.我们将所有疑问和顾虑归纳为以下二十个问题,希望对大家理解 MIP 有帮助. 1.MIP 化后对其他搜索引擎抓取收录以及 SEO 的影响如何? 答:在原页 ...

  3. ABP框架 - Swagger UI 集成

    文档目录 本节内容: 简介 Asp.net Core 安装 安装Nuget包 配置 测试 Asp.net 5.x 安装 安装Nuget包 配置 测试 简介 来自它的网页:“...使用一个Swagger ...

  4. node中的cmd规范

    你应该熟悉nodejs模块中的exports对象,你可以用它创建你的模块.例如:(假设这是rocker.js文件) exports.name = function() { console.log('M ...

  5. webpack入门教程之Hello webpack(一)

    webpack入门教程系列为官网Tutorials的个人译文,旨在给予想要学习webpack的小伙伴一个另外的途径.如有不当之处,请大家指出. 看完入门教程系列后,你将会学习到如下内容: 1.如何安装 ...

  6. 卡片抽奖插件 CardShow

    这个小项目(卡片秀)是一个卡片抽奖特效插件,用开源项目这样的词语让我多少有些羞愧,毕竟作为一个涉世未深的小伙子,用项目的标准衡量还有很大差距.不过该案例采用 jQuery 插件方式编写,提供配置参数并 ...

  7. 卸载oracle之后,如何清除注册表

    之前卸载了oracle,今天偶然间发现,在服务和应用程序里面,还残存着之前的oracle服务.原来,还需要去清理下注册表. 在开始菜单的这个框里面 输入regedit,进入注册表.找到这个目录 HKE ...

  8. java时间

    Calendar.getInstance().getTime() 获取当前时间(包括星期和时区 CST China Standard Time):  Fri Jan 06 21:03:36 CST 2 ...

  9. JDBC增加删除修改

    一.配置程序--让我们程序能找到数据库的驱动jar包 1.把.jar文件复制到项目中去,整合的时候方便. 2.在eclipse项目右击"构建路径"--"配置构建路径&qu ...

  10. gulp批量打包文件并提取公共文件

    gulp是前端开发过程中对代码进行构建的工具,是自动化项目的构建利器. browseriyf是模块化打包工具. 一般情况下,Browserify 会把所有的模块打包成单个文件.单个文件在大多数情况下是 ...