iOS学习第三天杂记
ios学习第三天杂谈,从一个接口文件和实现文件(student.h与student.m)中学习到的。相关文章请参考: OC精选字符串处理方法。
1. 代码规范:
1.1: 类名的首字母要大写
1.2: 方法的命名用驼峰命名法
2. 干货
2.1: 要在一个类中实例化类,需要先引入类的接口文件如***.h。
2.2: OC中类的实例化方式是 Student *student = [[Student alloc] init], 可以理解为Student类在NSObject类中继承了alloc方法, alloc这个方法是用来实例化对象的, init 是默认的构造方法
2.3: 在OC中对象调用其中的方法是通过[]来实现的,[对象名 方法名];
定义对象的语法:
类名 *对象名 = [ [ 类名 alloc ] init ]; 或者
类名 *对象名 = [ 类名 new];
给对象的成员变量赋值和调用对象的方法如下:
对象名->成员变量名 = 具体值;
[ 对象名 方法名];
2.4: 类方法和对象方法
上面也提到了,减号开头的方法为对象方法,需要实例化类后通过对象来进行调用。对象方法允许调用对象方法和对象变量加号开头的方法为类方法,通过类就可以直接调用的方法。
下面是一些方法调用的一些规则:
1.类方法可以调用类方法;
2.类方法不可以调用对象方法;
3.类方法不可以使用对象变量,类方法可以使用self(self相当于java中的this);
4.可以通过类来调用类方法,但对象不可以调用类方法
2.5: property的可读写性:
property的可读写性决定属性是否有setter方法
(1)readwrite : 指定属性是可读写的,这是默认值,因此可以省略
@property (readwrite) NSString *name;
(2) readonly : 指明属性是只读的。系统不会setter方法,但有getter方法
@property (readonly) NSString *name;
2.6: 字符串处理方法
1> 字符串的创建: NSString *str = [NSString stringWithString:@"hello"];
NSString *str = @"hello";
2> 字符串长度: NSUInteger len = [str length];
3> 字符串的比较: == 比较字符串的指针 isEqualToString 比较字符串的内容,返回值是BOOL类型
retain:始终是浅复制。引用计数每次加一。返回对象是否可变与被复制的对象保持一致。
copy:对于可变对象为深复制,引用计数不改变;对于不可变对象是浅复制, 引用计数每次加一。始终返回一个不可变对象。
mutableCopy:始终是深复制,引用计数不改变。始终返回一个可变对象。
4> 字符串的比较函数compare
NSString下面的compare函数的返回值是一个枚举类型NSComparisonResult; NSOrderedAscending=-1, NSOrderedSame=0,NSOrderedDescending = 1 ;
NSString *strCompare1 = @"abcde"; NSString *strCompare2 = @"bcdef"; NSComparisonResult result = [strCompare1 compare:strCompare2];
5> 字符串的拼接函数
stringByAppendingString : (NSString *) aString;
stringByAppendingFormat : (NSString *) format ...;
6> 字符串的查找
-(BOOL) hasPrefix : (NSString *) string: 判断一个字符串是否是以string开头;
-(BOOL) hasSuffix : (NSString *) string: 判断一个字符串是否是以string结尾;
-(NSRange) rangeOfString:(NSString *) string; 模式匹配字符串,返回类型是结构体NSRange, 结构体 NSRange里有两个值都是整型的,location代表子字符串在原有字符串中的位置,length代表长度。
NSString *parent = @"123456789"; NSString *pre = @"123"; NSString *suf = @"789"; NSString *mid = @"456"; if([parent hasPrefix:pre] == YES){ NSLog(@"Succeed"); } if([parent hasSuffix:suf] == YES){ NSLog(@"Succeed"); } NSRange range = [parent rangeOfString: mid]; NSLog(@"location = %lu, length = %lu", (unsigned long)range.location,(unsigned long)range.length);
7> 字符串的截取
-(NSString *) substringFromIndex : (NSUInteger) from 获取从字符串的开头到字符串结尾的字符串内容,不包含from位置的字符。
-(NSString *) substringToIndex : (NSUInterger) to 获取从字符串开头到字符串的to位置的字符串内容,包含to位置的字符;
-(NSString *) substringWithRange:(NSRange) range 根据NSRange这个范围来获取字符串;
NSString *parent = @"123456789"; NSString *toEnd = [parent substringFromIndex: 6]; NSLog(@"%@", toEnd); NSString *fromBegin = [parent substringToIndex: 3]; NSLog(@"%@", fromBegin); NSRange range = {3,3}; NSString *rangeString = [parent substringWithRange:range]; NSLog(@"%@", rangeString);
8> 字符串的类型转换函数
-(double) doubleValue; 把字符串的内容转换为double类型
-(float) floatValue; 把相应的字符串转换为float类型
-(int) intValue;把相应的字符串转换为int类型
9> 字符串大小写转换函数
-(NSString *)uppercaseString : 将字符全改成大写的;
-(NSString *)lowercaseString : 将字符全改成小写的;
-(NSString *)capitalizedString : 将首字母进行大写;
10> 字符串替换函数
-(NSString *)stringByReplacingOccurrencesOfString: (NSString *) target withString : (NSString *) replacement; 把字符串target转换为replacement;
-(NSString *)stringByReplacingCharactersInRange : (NSRange) range withString : (NSString *) replacement; 把指定范围内的字符串进行替换;
-(NSArray *) componentsSeparatedByString:(NSString *) separator:以字符串中的某个字符进行分割,返回数组对象;
NSString *str = @"abc,def,g";
//将字符串中特定的字符串换成指定的字符串
NSString *after = [str stringByReplacingOccurrencesOfString:@"a" withString:@"zzzzzzz"]; NSLog(@"%@", after);
//将range范围内的字符串替换为相应的字符串 NSRange range = {0,6}; NSString *rangeString = [str stringByReplacingCharactersInRange:range withString:@"a"]; NSLog(@"%@", rangeString);
//分割字符串,把分割完的字符串存入数组中 NSArray *split = [str componentsSeparatedByString:@","]; for(int i = 0; i < [split count]; i++){ NSLog(@"%@", [split objectAtIndex:i]); }