这些都是项目中常用但又常忘的方法,与大家分享一下。
一、NSString
创建字符串。
1 NSString *astring = @"This is a String!";
创建空字符串,给予赋值。
1 NSString *astring = [[NSString alloc] init]; 2 3 astring = @"This is a String!"; 4 5 NSLog(@"astring:%@",astring);
使用变量初始化
1 NSString *name = @"Ivan!"; 2 NSString *astring = [[NSString stringWithFormat:@”My name is %@!”,name]]; 3 NSLog(@"astring:%@",astring);
判断是否包含某字符串
检查字符串是否以另一个字符串开头
1 - (BOOL) hasPrefix: (NSString *) aString; 2 NSString *String1 = @"NSStringInformation.txt"; 3 [String1 hasPrefix:@"NSString"] == 1 ? NSLog(@"YES") : NSLog(@"NO"); 4 [String1 hasSuffix:@".txt"] == 1 ? NSLog(@"YES") : NSLog(@"NO");
是否包含其它字符
1 NSString *astring = [[NSString alloc] initWithString:@"This is a String!"]; 2 Boolean contains = [astring rangeOfString:@”This”].length>0;
从文件读取字符串:
1 initWithContentsOfFile方法 2 NSString *path = @"astring.text"; 3 NSString *astring = [[NSString alloc] initWithContentsOfFile:path]; 4 NSLog(@"astring:%@",astring);
写字符串到文件:writeToFile方法
1 NSString *astring = [[NSString alloc] initWithString:@"This is a String!"]; 2 NSLog(@"astring:%@",astring); 3 NSString *path = @"astring.text"; 4 [astring writeToFile: path atomically: YES];
比较两个字符串
isEqualToString方法
1 NSString *astring01 = @"This is a String!"; 2 NSString *astring02 = @"This is a String!"; 3 BOOL result = [astring01 isEqualToString:astring02]; 4 NSLog(@"result:%d",result);
compare方法(comparer返回的三种值)
1 NSString *astring01 = @"This is a String!"; 2 NSString *astring02 = @"This is a String!"; 3 BOOL result = [astring01 compare:astring02] = = NSOrderedSame; 4 NSLog(@"result:%d",result);
NSOrderedSame判断两者内容是否相同
1 NSString *astring01 = @"This is a String!"; 2 NSString *astring02 = @"this is a String!"; 3 BOOL result = [astring01 compare:astring02] = = NSOrderedAscending; 4 NSLog(@"result:%d",result);
不考虑大小写比较字符串1
1 NSString *astring01 = @"this is a String!"; 2 NSString *astring02 = @"This is a String!"; 3 BOOL result = [astring01 caseInsensitiveCompare:astring02] = = NSOrderedSame; 4 NSLog(@"result:%d",result);
改变字符串的大小写
1 NSString *string1 = @"A String"; 2 NSString *string2 = @"String"; 3 NSLog(@"string1:%@",[string1 uppercaseString]);//大写 4 NSLog(@"string2:%@",[string2 lowercaseString]);//小写 5 NSLog(@"string2:%@",[string2 capitalizedString]);//首字母大小
在串中搜索子串
1 NSString *string1 = @"This is a string"; 2 NSString *string2 = @"string"; 3 NSRange range = [string1 rangeOfString:string2]; 4 int location = range.location; 5 int leight = range.length; 6 NSString *astring = [[NSString alloc] initWithString:[NSString stringWithFormat:@"Location:%i,Leight:%i",location,leight]]; 7 NSLog(@"astring:%@",astring);
替换字符串
1 NSString *astring01 = @"hello 中国"; 2 NSString * new = [astring01 stringByReplacingOccurrencesOfString:@”中国” withString:@"北京"]; 3 NSLog(new);
分割字符串成数组
1 NSString *s = @"a b d e f"; 2 NSArray *arr = [s componentsSeparatedByString:@" "]; 3 NSLog(@"count = %d",[arr count]);
字符串数组拼接成字符串
1 NSArray *pathArray = [NSArray arrayWithObjects:@"here", @"be", @"dragons", nil]; 2 NSLog(@"%@",[pathArray componentsJoinedByString:@""]);
抽取子串
1 //substringToIndex: 从字符串的开头一直截取到指定的位置,但不包括该位置的字符 2 NSString *string1 = @"This is a string"; 3 NSString *string2 = [string1 substringToIndex:3]; 4 NSLog(@"string2:%@",string2);
1 //-substringFromIndex: 以指定位置开始(包括指定位置的字符),并包括之后的全部字符 2 NSString *string1 = @"This is a string"; 3 NSString *string2 = [string1 substringFromIndex:3]; 4 NSLog(@"string2:%@",string2);
1 //substringWithRange: //按照所给出的位置,长度,任意地从字符串中截取子串 2 NSString *string1 = @"This is a string"; 3 NSString *string2 = [string1 substringWithRange:NSMakeRange(0, 4)]; 4 NSLog(@"string2:%@",string2);
二、NSMutableString
给字符串分配容量
1 //stringWithCapacity: 2 NSMutableString *String; 3 String = [NSMutableString stringWithCapacity:40];
在已有字符串后面添加字符
1 //appendString: and appendFormat: 2 NSMutableString *String1 = [[NSMutableString alloc] initWithString:@"This is a NSMutableString"]; 3 //[String1 appendString:@", I will be adding some character"]; 4 [String1 appendFormat:[NSString stringWithFormat:@", I will be adding some character"]]; 5 NSLog(@"String1:%@",String1);
在已有字符串中按照所给出范围和长度删除字符
1 //deleteCharactersInRange: 2 NSMutableString *String1 = [[NSMutableString alloc] initWithString:@"This is a NSMutableString"]; 3 [String1 deleteCharactersInRange:NSMakeRange(0, 5)]; 4 NSLog(@"String1:%@",String1);
在已有字符串后面在所指定的位置中插入给出的字符串
1 //-insertString: atIndex: 2 NSMutableString *String1 = [[NSMutableString alloc] initWithString:@"This is a NSMutableString"]; 3 [String1 insertString:@"Hi! " atIndex:0]; 4 NSLog(@"String1:%@",String1);
将已有的换成其它的字符串
1 //-setString: 2 NSMutableString *String1 = [[NSMutableString alloc] initWithString:@"This is a NSMutableString"]; 3 [String1 setString:@"Hello Word!"]; 4 NSLog(@"String1:%@",String1);
按照所给出的范围,和字符串替换的原有的字符
1 //-setString: 2 NSMutableString *String1 = [[NSMutableString alloc] initWithString:@"This is a NSMutableString"]; 3 [String1 replaceCharactersInRange:NSMakeRange(0, 4) withString:@"That"]; 4 NSLog(@"String1:%@",String1);
三、NSArray
创建数组
1 NSArray *array = [[NSArray alloc] initWithObjects: @"One",@"Two",@"Three",@"Four",nil]; 2 self.dataArray = array; 3 //- (unsigned) Count;数组所包含对象个数; 4 NSLog(@"self.dataArray cound:%d",[self.dataArray count]); 5 //获取指定索引处的对象 6 NSLog(@"self.dataArray cound 2:%@",[self.dataArray objectAtIndex:2]);
从一个数组拷贝数据到另一数组
1 //arrayWithArray: 2 //NSArray *array1 = [[NSArray alloc] init]; 3 NSMutableArray *MutableArray = [[NSMutableArray alloc] init]; 4 NSArray *array = [NSArray arrayWithObjects: @"a",@"b",@"c",nil]; 6 NSLog(@"array:%@",array); 7 MutableArray = [NSMutableArray arrayWithArray:array]; 8 NSLog(@"MutableArray:%@",MutableArray); 9 array1 = [NSArray arrayWithArray:array]; 10 NSLog(@"array1:%@",array1); 11 //Copy 12 //id obj; 13 NSMutableArray *newArray = [[NSMutableArray alloc] init]; 14 NSArray *oldArray = [NSArray arrayWithObjects: @"a",@"b",@"c",@"d",@"e",@"f",@"g",@"h",nil]; 16 NSLog(@"oldArray:%@",oldArray); 17 for(int i = 0; i < [oldArray count]; i++) 18 { 19 obj = [[oldArray objectAtIndex:i] copy]; 20 [newArray addObject: obj]; 21 } 22 // 23 NSLog(@"newArray:%@", newArray);
快速遍历数组
1 //NSMutableArray *newArray = [[NSMutableArray alloc] init]; 2 NSArray *oldArray = [NSArray arrayWithObjects: @"a",@"b",@"c",@"d",@"e",@"f",@"g",@"h",nil]; 4 NSLog(@"oldArray:%@",oldArray); 5 for(id obj in oldArray) 6 { 7 [newArray addObject: obj]; 8 } 9 // 10 NSLog(@"newArray:%@", newArray); 11 [newArray release]; 12 Copy and sort 13 //NSMutableArray *newArray = [[NSMutableArray alloc] init]; 14 NSArray *oldArray = [NSArray arrayWithObjects: @"b",@"a",@"e",@"d",@"c",@"f",@"h",@"g",nil]; 16 NSLog(@"oldArray:%@",oldArray); 17 NSEnumerator *enumerator; 18 enumerator = [oldArray objectEnumerator]; 19 id obj; 20 while(obj = [enumerator nextObject]) 21 { 22 [newArray addObject: obj]; 23 } 24 [newArray sortUsingSelector:@selector(compare:)]; 25 NSLog(@"newArray:%@", newArray);
给数组分配容量
1 NSArray *array; 2 array = [NSMutableArray arrayWithCapacity:20];
在数组末尾添加对象
1 //- (void) addObject: (id) anObject; 2 NSMutableArray *array = [NSMutableArray arrayWithObjects:@"One",@"Two",@"Three",nil]; 3 [array addObject:@"Four"]; 4 NSLog(@"array:%@",array);
删除数组中指定索引处对象
1 //-(void) removeObjectAtIndex: (unsigned) index; 2 NSMutableArray *array = [NSMutableArray arrayWithObjects:@"One",@"Two",@"Three",nil]; 3 [array removeObjectAtIndex:1]; 4 NSLog(@"array:%@",array);
数组枚举
从前向后
1 NSMutableArray *array = [NSMutableArray arrayWithObjects: @"One",@"Two",@"Three",nil]; 3 NSEnumerator *enumerator; 4 enumerator = [array objectEnumerator]; 5 id thingie; 6 while (thingie = [enumerator nextObject]) { 7 NSLog(@"thingie:%@",thingie); 8 }
从后向前
1 NSMutableArray *array = [NSMutableArray arrayWithObjects: @"One",@"Two",@"Three",nil]; 2 NSEnumerator *enumerator; 3 enumerator = [array reverseObjectEnumerator]; 4 id object; 5 while (object = [enumerator nextObject]) { 6 NSLog(@"object:%@",object); 7 }
快速枚举
1 //NSMutableArray *array = [NSMutableArray arrayWithObjects: @"One",@"Two",@"Three",nil]; 2 for(NSString *string in array) 3 { 4 NSLog(@"string:%@",string); 5 }
创建字典
1 //- (id) initWithObjectsAndKeys; 2 ctionary *dictionary = [[NSDictionary alloc] initWithObjectsAndKeys:@"One",@"1",@"Two",@"2",@"Three",@"3",nil]; 3 NSString *string = [dictionary objectForKey:@"One"]; 4 NSLog(@"string:%@",string); 5 NSLog(@"dictionary:%@",dictionary);
NSMutableDictionary
1 //创建 2 NSMutableDictionary *dictionary = [NSMutableDictionary dictionary]; 3 //添加字典 4 [dictionary setObject:@"One" forKey:@"1"]; 5 [dictionary setObject:@"Two" forKey:@"2"]; 6 [dictionary setObject:@"Three" forKey:@"3"]; 7 [dictionary setObject:@"Four" forKey:@"4"]; 8 NSLog(@"dictionary:%@",dictionary); 9 //删除指定的字典 10 [dictionary removeObjectForKey:@"3"]; 11 NSLog(@"dictionary:%@",dictionary);
NSValue(对任何对象进行包装)
将NSRect放入NSArray中
1 NSMutableArray *array = [[NSMutableArray alloc] init]; 2 NSValue *value; 3 CGRect rect = CGRectMake(0, 0, 320, 480); 4 value = [NSValue valueWithBytes:&rect objCType:@encode(CGRect)]; 5 [array addObject:value]; 6 NSLog(@"array:%@",array);
从Array中提取
1 value = [array objectAtIndex:0]; 2 [value getValue:&rect]; 3 NSLog(@"value:%@",value);
定义结构体并添加到NSArray里面
1 typedef struct { 2 float real; 3 float imaginary; 4 } ImaginaryNumber; 5 ImaginaryNumber miNumber; 6 miNumber.real = 1.1; 7 miNumber.imaginary = 1.41; 8 NSValue *miValue = [NSValue value:miNumber withObjCType:@encode(ImaginaryNumber)]; // encode using the type name 9 ImaginaryNumber miNumber2; 10 [miValue getValue:&miNumber2];
四、宏定义#define讲解
NSNumber
1 + (NSNumber *)numberWithInt:(int)value; 2 + (NSNumber *)numberWithDouble:(double)value; 3 - (int)intValue; 4 - (double)doubleValue;
NSNumber可以将基本数据类型包装起来,形成一个对象,这样就可以给其发送消息,装入NSArray中等等。
1 NSNumber * intNumber=[NSNumber numberWithInt:100]; 2 NSNumber *floatNumber=[NSNUmber numberWithFloat:100.00]; 3 int i=[intNumber intValue]; 4 if([intNumber isEqualToNumber:floatNumber]) ....
NSNumber继承NSObject ,可以使用比较 compare: isEqual等消息
NSNull
IOS里面最小简单的类,里面只有一个方法+(NSNull*) null;
数学常用方法
数学常量:
1 #define M_E 2.71828182845904523536028747135266250 // e 2 #define M_LOG2E 1.44269504088896340735992468100189214 // log 2e 3 #define M_LOG10E 0.434294481903251827651128918916605082 // log 10e 4 #define M_LN2 0.693147180559945309417232121458176568 // log e2 5 #define M_LN10 2.30258509299404568401799145468436421 // log e10 6 #define M_PI 3.14159265358979323846264338327950288 // pi 7 #define M_PI_2 1.57079632679489661923132169163975144 // pi/2 8 #define M_PI_4 0.785398163397448309615660845819875721 // pi/4 9 #define M_1_PI 0.318309886183790671537767526745028724 // 1/pi 10 #define M_2_PI 0.636619772367581343075535053490057448 // 2/pi 11 #define M_2_SQRTPI 1.12837916709551257389615890312154517 // 2/sqrt(pi) 12 #define M_SQRT2 1.41421356237309504880168872420969808 // sqrt(2) 13 #define M_SQRT1_2 0.707106781186547524400844362104849039 // 1/sqrt(2)
常用函数:
指数运算
1 NSLog(@"%.f", pow(3,2) ); //result 9 2 NSLog(@"%.f", pow(3,3) ); //result 27
开平方运算(计算两点间的距离时用到)
1 NSLog(@"%.f", sqrt(16) ); //result 4 2 NSLog(@"%.f", sqrt(81) ); //result 9
上舍入
1 NSLog(@"res: %.f", ceil(3.000000000001)); //result 4 2 NSLog(@"res: %.f", ceil(3.00)); //result 3
下舍入
1 NSLog(@"res: %.f", floor(3.000000000001)); //result 3 2 NSLog(@"res: %.f", floor(3.9999999)); //result 3
四舍五入
1 NSLog(@"res: %.f", round(3.5)); //result 4 2 NSLog(@"res: %.f", round(3.46)); //result 3 3 NSLog(@"res: %.f", round(-3.5)); //NB: this one returns -4
最小值
1 NSLog(@"res: %.f", fmin(5,10)); //result 5
最大值
1 NSLog(@"res: %.f", fmax(5,10)); //result 10
绝对值
1 NSLog(@"res: %.f", fabs(10)); //result 10 2 NSLog(@"res: %.f", fabs(-10)); //result 10
NSDate
得到当前的日期
NSDate *date = [NSDate date];
日期之间比较可用以下方法
1 - (BOOL)isEqualToDate:(NSDate *)otherDate;// 与otherDate比较,相同返回YES 2 - (NSDate *)earlierDate:(NSDate *)anotherDate;// 与anotherDate比较,返回较早的那个日期 3 - (NSDate *)laterDate:(NSDate *)anotherDate;//与anotherDate比较,返回较晚的那个日期
将日期转换成字符串
1 NSLog(@”date = %@”,[data description]);
设置日期显示格式
1 NSDateFormatter *formatter =[[[NSDateFormatter alloc] init] autorelease]; 2 [formatter setTimeStyle:NSDateFormatterFullStyle]; //设置几种默认的显示效果 3 [formatter setDateFormat:@"yyyy-MM-dd HH:mm:ss a"];//设置自定义的显示效果 4 NSLog([formatter stringFromDate:date]);
NSData
//NSData-> NSString NSString *aString = [[NSString alloc] initWithData:data encoding:NSUTF8StringEncoding]; //NSString->NSData NSString *aString = @"1234abcd"; NSData *aData = [aString dataUsingEncoding: NSUTF8StringEncoding];
NSString和Time
1 // 创建字符串 2 - (void)CreatString 3 { 4 // <1> 创建字符创 5 NSString *strS = @"This is a String!"; 6 7 // <2> 创建空字符串,给予赋值 8 NSString *strK = [[NSString alloc] init]; 9 10 strK = @"This is a String!"; 11 12 NSLog(@"strS:%@, strK%@",strS,strK); 13 14 // <3> 使用变量初始化字符串 15 NSString *name = @"aofe"; 16 17 NSString *strN = [NSString stringWithFormat:@"My name is %@",name]; 18 19 NSLog(@"strN:%@",strN); 20 } 21 22 // 判断是否包含某字符串 23 - (void)IsContainsString 24 { 25 NSString *str1 = @"NSStringInformation.txt"; 26 27 // <1> 检查字符串是否以另一个字符串开头 28 [str1 hasPrefix:@"NSString"] == 1? NSLog(@"YES") :NSLog(@"NO"); 29 30 // <2> 检查字符串是否以另一个字符串结尾 31 [str1 hasSuffix:@".txt"] == 1? NSLog(@"YES") :NSLog(@"NO"); 32 33 // <3> 检查字符串是否包含其他字符串 34 [str1 rangeOfString:@"Information"].length > 0 ? NSLog(@"YES") :NSLog(@"NO"); 35 36 } 37 38 // 读写字符串 39 -(void)WriteAndReadString 40 { 41 // 文件路径 42 NSString *path = @"wenJianQuanLuJing"; 43 44 // <1> 从文件读取字符串 45 NSString *strW = [NSString stringWithContentsOfFile:path encoding:NSUTF8StringEncoding error:NULL]; 46 47 // <2> 将字符串写入到文件 48 [strW writeToFile:path atomically:YES encoding:NSUTF8StringEncoding error:NULL]; 49 } 50 51 // 比较两个字符串 52 -(void)ComparerTwoString 53 { 54 NSString *str1 = @"This is String1"; 55 56 NSString *str2 = @"THIS is String2"; 57 58 // 比较两个字符串是否相等 59 BOOL result1 = [str1 isEqualToString:str2]; 60 61 // 比较两个字符串(comparer方法返回三种值:NSOrderedAscending = -1L, NSOrderedSame, NSOrderedDescending) 62 63 NSComparisonResult result2 = [str1 compare:str2]; 64 65 // 不考虑大小比较字符串 66 NSComparisonResult result3 = [str1 caseInsensitiveCompare:str2]; 67 68 NSLog(@"result1:%d,result2:%ld,result3:%ld",result1,(long)result2,(long)result3); 69 70 } 71 72 // 改变字符串的大小写 73 -(void)ChangeStringCase 74 { 75 NSString *str1 = @"this is string1"; 76 NSString *str2 = @"THIS IS STRING2"; 77 78 // 全部大写 79 [str1 uppercaseString]; 80 81 // 全部小写 82 [str2 lowercaseString]; 83 84 // 首字母大写 85 [str1 capitalizedString]; 86 } 87 88 // 在字符串中搜索子串 89 -(void)SearchString 90 { 91 NSString *str1 = @"This is String1"; 92 NSString *str2 = @"is"; 93 94 NSRange range = [str1 rangeOfString:str2]; 95 96 NSLog(@"location:%lu,length:%lu",(unsigned long)range.location,(unsigned long) 97 range.length); 98 99 } 100 101 // 替换字符串 102 -(void)ReplaceString 103 { 104 NSString *strL = @"hello china"; 105 106 NSString *strN = [strL stringByReplacingOccurrencesOfString:@"china" withString:@"beijing"]; 107 108 NSLog(@"strL:%@,strN:%@",strL,strN); 109 } 110 111 // 分隔字符串成数组 112 -(void)ComponentsString 113 { 114 NSString *str = @"a b c d e"; 115 // 以空格分隔字符串成数组 116 NSArray *arr = [str componentsSeparatedByString:@" "]; 117 118 NSLog(@"arr:%@,arr.count:%lu",arr,(unsigned long)arr.count); 119 120 } 121 122 // 数组拼接成字符串 123 -(void)ArrayToString 124 { 125 NSArray *array = [NSArray arrayWithObjects:@"this",@"is",@"String", nil]; 126 // 用空格隔开数组中的元素 127 NSString *str = [array componentsJoinedByString:@" "]; 128 129 NSLog(@"str:%@",str); 130 } 131 132 // 从字符串中抽取出新的字符串 133 -(void)DrawNewString 134 { 135 NSString *str = @"This is String"; 136 // 从字符串的开头一直截取到指定位置,但不包括该位置的字符. 137 NSString *str1 = [str substringToIndex:5]; 138 139 // 从指定位置开始(包括自定位置的字符串)一直到最后 140 NSString *str2 = [str substringFromIndex:5]; 141 142 // 按照所给定的位置和长度,任意的从字符串中截取新的字符串 143 NSString *str3 = [str substringWithRange:NSMakeRange(4, 5)]; 144 145 NSLog(@"str1:%@,str2:%@,str3:%@",str1,str2,str3); 146 } 147 148 // 可变字符串的操作 149 - (void)NSMutableStringOperation 150 { 151 // 给字符串分配容量 152 NSMutableString *strM = [NSMutableString stringWithCapacity:100]; 153 NSLog(@"strM:%@",strM); 154 155 // 在已有的字符串后面添加字符串 156 NSMutableString *strM1 = [[NSMutableString alloc] initWithString:@"This is a"]; 157 NSLog(@"strM1:%@",strM1); 158 159 [strM1 appendString:@"NSMutableString"]; 160 NSLog(@"strM1:%@",strM1); 161 162 // 在已有字符串中按照所给出的范围和长度删除字符 163 [strM1 deleteCharactersInRange:NSMakeRange(0, 5)]; 164 NSLog(@"strM1:%@",strM1); 165 166 // 在字符串指定位置插入字符串 167 [strM1 insertString:@"Hello" atIndex:0]; 168 NSLog(@"strM1:%@",strM1); 169 170 // 将已有字符串替换成其他字符串 171 [strM1 setString:@"Hello World"]; 172 NSLog(@"strM1:%@",strM1); 173 174 // 按照所给出的范围,用新字符串替换原来的字符串 175 [strM1 replaceCharactersInRange:NSMakeRange(0, 5) withString:@"Hi"]; 176 NSLog(@"strM1:%@",strM1); 177 } 178 179 // 时间操作 180 - (void)NSDateOperation 181 { 182 // 得到当前日期 183 NSDate *date1 = [NSDate date]; 184 NSLog(@"date:%@",date1); 185 186 NSDate *date2 = [NSDate dateWithTimeIntervalSinceNow:3]; 187 188 // 比较日期: 189 190 // <1> 比较日期是否相同 191 BOOL result =[date1 isEqualToDate:date2]; 192 193 // <2> 比较日期 返回时间较早的日期 194 NSDate *dateE = [date1 earlierDate:date2]; 195 196 // <3> 比较日期 返回时间较晚的日期 197 NSDate *dateL = [date1 laterDate:date2]; 198 199 NSLog(@"result:%d, dateE:%@, dateL:%@",result,dateE,dateL); 200 201 // 设置日期的格式 202 NSDateFormatter *formatter = [[NSDateFormatter alloc] init]; 203 204 // 设置几种默认的显示效果 205 [formatter setTimeStyle:NSDateFormatterMediumStyle]; 206 207 //自定义日期显示效果 208 [formatter setDateFormat:@"yyyy-MM-dd HH:mm:ss"]; 209 210 NSString *time = [formatter stringFromDate:date1]; 211 212 NSLog(@"%@",time); 213 214 }
Math
// 常用常数 -(void)mathConstant { #define M_E 2.71828182845904523536028747135266250 /* e */ #define M_LOG2E 1.44269504088896340735992468100189214 /* log2(e) */ #define M_LOG10E 0.434294481903251827651128918916605082 /* log10(e) */ #define M_LN2 0.693147180559945309417232121458176568 /* loge(2) */ #define M_LN10 2.30258509299404568401799145468436421 /* loge(10) */ #define M_PI 3.14159265358979323846264338327950288 /* pi */ #define M_PI_2 1.57079632679489661923132169163975144 /* pi/2 */ #define M_PI_4 0.785398163397448309615660845819875721 /* pi/4 */ #define M_1_PI 0.318309886183790671537767526745028724 /* 1/pi */ #define M_2_PI 0.636619772367581343075535053490057448 /* 2/pi */ #define M_2_SQRTPI 1.12837916709551257389615890312154517 /* 2/sqrt(pi) */ #define M_SQRT2 1.41421356237309504880168872420969808 /* sqrt(2) */ #define M_SQRT1_2 0.707106781186547524400844362104849039 /* 1/sqrt(2) */ } // 常用函数 - (void)mathFunc { // <1> 指数运算 NSLog(@"%.f",pow(3, 2)); //9 NSLog(@"%.f",pow(2, 3)); //8 // <2> 开平方运算(计算两点之间的距离) NSLog(@"%.f",sqrt(16)); // 4 NSLog(@"%.f",sqrt(81)); // 9 // <3> 四舍五入 NSLog(@"round:%.f",round( 3.5)); // 4 NSLog(@"round:%.f",round(-3.5)); // -4 // <4> 上舍入 NSLog(@"ceil:%f",ceil(3.00001)); // 4 NSLog(@"ceil:%f",ceil(3.00000)); // 3 // <5> 下舍入 NSLog(@"res:%f",floor(3.00001)); // 3 NSLog(@"res:%f",floor(3.99999)); // 3 // <6> 最小值 NSLog(@"min:%f",fmin(5, 10)); // 5 // <7> 最大值 NSLog(@"max:%f",fmax(11, 5)); // 11 // <8> 绝对值 NSLog(@"abs:%d",abs(-10)); // 10 NSLog(@"fabs:%f",fabs(-5.5)); // 5.5 }