摘要:
// 计算文件的代码行数/* path : 文件的全路径(可能是文件夹、也可能是文件) 返回值 int :代码行数 */NSUInteger codeLineCount(NSString *path){ // 1.获得文件管理者 NSFileManager *mgr = [NSF... 阅读全文
摘要:
// NSNumber之所以能包装基本数据类型为对象,是因为继承了NSValue // 结构体--->OC对象 CGPoint p = CGPointMake(10, 10); // 将结构体转为Value对象 NSValue *value = [NSValue valueWithPoint:p]; // 将value转为对应的结构体 [value pointValue]; NSArray *array = @[value ]; 阅读全文
摘要:
// 创建一个时间对象 NSDate *date = [NSDate date]; // 打印出的时候是0时区的时间(北京-东8区) NSLog(@"%@", date); // 在date时间的基础上往后推 5 秒。 NSDate *date2 = [NSDate dateWithTimeInterval:5 sinceDate:date]; NSLog(@"%@",date2); // 从1970开始走过的秒数 NSTimeInterval seconds = [date2 timeIntervalSi... 阅读全文
摘要:
NSNumber *num = [NSNumber numberWithInt:10]; NSDictionary *dict = @{ @"name" : @"jack", @"age" : num }; NSNumber *num2 = dict[@"age"]; int a = [num2 intValue]; NSLog(@"%d" , a); //10// @20 将 20包装成一个NSNumber对像 NSArray *array = @[ @{@"name" : 阅读全文
摘要:
/* 集合 1.NSArray\NSMutableArray //ArrayList * 有序 * 快速创建(不可变):@[obj1, obj2, obj3] * 快速访问元素:数组名[i] 2.NSSet\NSMutableSet //Set * 无序 * 不可以快速创建 3.NSDictionary\NSMutableDictionary //Map * 无序 * 快速创建(不可变):@{key1 : value1, key2 : value2} * 快速访问元素:字典名[key] */ /* 字典: key ----> value ... 阅读全文
摘要:
/* * NSSet和NSArray的对比 * 1> 共同点 * 都是集合,都能存放多个OC对象 * 只能存放OC对象,不能存放非OC对象类型(基本数据类型:int、char、float等,结构体,枚举) * 本身都不可变,都有一个可变的子类 * * 2> 不同点 * NSArray有顺序,NSSet没有顺序 */ NSSet *s = [NSSet set]; NSSet *s2 = [NSSet setWithObjects:@"jack",@"rose", @"jack2",@"jack3",ni 阅读全文
摘要:
/* * NSArray :不可变数组 * NSMutableArray : 可变数组 *//* *生成数组,添加与删除元素。 */void mutableArray(){ NSMutableArray *array = [NSMutableArray arrayWithObjects:@"jim", nil]; // 每添加一个新元素到数组中,都会对这个元素做一次retain操作 // 每删除一个元素,都会对这个元素做一次release // 当数组被销毁的时候,数组中的所有元素都会做一次release [array addObject:@"... 阅读全文
摘要:
/* * 字符串的替换和插入 */void stringReplace(){ NSMutableString *str = [NSMutableString stringWithFormat:@"/users/mj/abc.txt"]; NSRange range = [str rangeOfString:@"abc"]; [str replaceCharactersInRange:range withString:@"cde"]; //将abc替换为cde NSUInteger location = [str rangeOfStri 阅读全文
摘要:
/* *字符串写入文件: */void stringExport(){ NSString *str = @"ha"; NSString *path = @"/Users/apple/Desktop/mj.txt"; NSError *error = nil; // 如果文件夹不存在,会写入失败 // 如果文件夹存在,文件不存在,会自动创建文件 // 每次写入都会覆盖以前的内容 // atomically :YES: 原子性操作,全部内容写入成功才会产生新的内容。如果中途写入失败,就回滚操作。 // ... 阅读全文
摘要:
//NSRange变量:表示一个区域; // 创建NSRange的方式 NSRange r1 = {2,4}; // 不推荐 NSRange r2 = {.location = 2,.length = 4}; // 不推荐 NSRange r3 = NSMakeRange(2, 4); // 推荐使用 NSString *str1 = @"i love oc"; // 查找某个字符串在str中的范围 // 如果找不到,length=0,location=NSNotFound==-1 ... 阅读全文
摘要:
一、arc的基本使用: ARC的判断准则:只要没有强指针指向对象,就会释放对象 1.ARC特点 1> 不允许调用release、retain、retainCount 2> 允许重写dealloc,但是不允许调用[super dealloc] 3> @property的参数 * strong :成员变量是强指针(适用于OC对象类型) * weak :成员变量是弱指针(适用于OC对象类型) * assign : 适用于非OC对象类型 4> 以前的retain改为用strong 指针分2种: 1> 强指针:默认情况下,所有的指针都是强指针 __str... 阅读全文
摘要:
一、引用计数器的基本操作: 1.方法的基本使用 1> retain :计数器+1,会返回对象本身 2> release :计数器-1,没有返回值 3> retainCount :获取当前的计数器的值 4> dealloc // 当一个Person对象被回收的时候,就会自动调用这个方法 - (void)dealloc { NSLog(@"Person对象被回收"); // super的dealloc一定要调用,而且放在最后面 [super dealloc... 阅读全文
摘要:
1.id: 万能指针id :id对象不能用点语法、id对象本身已经有 * 了 因此变量名不能有 * 。 可以吧id理解为 NSObject * 类型数据! int main() { @autoreleasepool { Person *p = [Person new]; NSObject *o = [Person new]; // 万能指针id id d = [Person new]; [d setAge:... 阅读全文
摘要:
1 int main(int argc, const char * argv[]) 2 { 3 @autoreleasepool { 4 Student *stu = [[Student alloc] init]; 5 6 // 设置age的值 7 stu.age = 10; // 等价于[stu setAge:10]; 8 9 // 取出age的值 10 int age = stu.age; // 等价于int... 阅读全文
摘要:
一、语法简介: 1.类: 在Java中,我们用1个.java文件就可以描述清楚一个类;在OC中,一般用2个文件来描述一个类: 1> .h:类的声明文件,用于声明成员变量、方法。类的声明使用关键字@interface和@end。 注意:.h中的方法只是做一个声明,并不对方法进行实现。 也就是说,只是说明一下方法名、方法的返回值类型、方法接收的参数类型而已,并不会编写方法内部的代码。 2> .m:类的实现文件,用于实现.h中声明的方法。类的实现使用关键字@implementation和@end。... 阅读全文
摘要:
1 #import 2 3 int main(int argc, const char * argv[]) 4 { 5 6 @autoreleasepool { 7 8 // insert code here... 9 NSLog(@"Hello, World!"); 10 11 } 12 return 0; 13 } 1.程序的入口点:main函数 2.@autoreleasepool: OC是不支持垃圾回收的,需要开发人... 阅读全文
摘要:
枚举:一、枚举的概念: 比如,你可以用一个枚举类型的变量来表示季节,因为季节只有4种可能的取值:春天、夏天、秋天、冬天。 二、枚举类型的定义: 一般形式为:enum 枚举名 {枚举元素1,枚举元素2,⋯⋯}; enum Season {spring, summer, autumn, winter}; 三、枚举变量的定义: 前面只是定义了枚举类型,接下来就可以利用定义好的枚举类型定义变量。 跟结构体一样,有3种方式定义枚举变量 1.先定义枚举类型,再定义枚举变量 enum Season {spring, summer, autumn, winte... 阅读全文
摘要:
一、什么是结构体: 数组:内部的元素是相同类型的。 结构体:允许内部的元素是不同类型的。 二、结构体的定义: 1.定义形式: 结构体内部的元素,也就是组成成分,我们一般称为"成员"。 结构体的一般定义形式为: 1 struct 结构体名{ 2 3 类型名1 成员名1; 4 5 类型名2 成员名2; 6 7 ⋯⋯ 8 9 类型名n 成员名n; 10 11 }; struct是关键字,是结构体类型的标志。 2... 阅读全文
摘要:
一、在Java中,全局变量的定义没有严格的位置规定: 二、在C语言中,全局变量定义的位置是有限制的: 默认情况下,一个函数不可以访问在它后面定义的全局变量 第1种办法:将变量a定义在main函数的前面 第2种办法:在main函数前面对变量a进行提前声明 三、重复定义同一个变量: 重复定义同一个变量a代表着同一个变量。 四、不同源文件中的同名变量: 假如在另一个源文件中也有全局变量int a;,那么这两个源文件的所有全局变量int a;都代表着同一个变量。 五、static关键字: 但很多时候,我们并不想让源文件中的全局变量跟其他源文件共享,相当于... 阅读全文
摘要:
一、extern与函数:(外部函数) 如果一个程序中有多个源文件(.c),编译成功会生成对应的多个目标文件(.obj),这些目标文件还不能单独运行,因为这些目标文件之间可能会有关联,比如a.obj可能会调用c.obj中定义的一个函数。将这些相关联的目标文件链接在一起后才能生成可执行文件。 先来理解2个概念: 1.外部函数:如果在当前文件中定义的函数允许其他文件访问、调用,就称为外部函数。C语言规定,不允许有同名的外部函数。 2.内部函数:如果在当前文件中定义的函数不允许其他文件访问、调用,只能在内部使用,就称为内部函数。C语言规定不同的源文件可以有同名的内部... 阅读全文