参考书籍:Objective-C基础教程
不喜欢看书,里面字太多了。所以看一次之后把自己想记的东西整理出来。
关于结构体:
NSRange,表示事物相相关范围
定义
typedef struct _NSRange{
unsigned int location;//起始位置
unsigned int length;//该范围内的个数,或者说是包含的个数
}NSRange;
创建方式
1,直接赋值
NSRange range;
range.location=17;
range.length=14;
2.用C的聚合机制复制
NSRange range={17,4}
3.用Cocoa函数
NSRange range = NSMakeRange(17,4);
其他结构体还有
NSPoint表示平面的一个点
typedef struct _NSPoint{
float x;
float y;
} NSPoint;
NSSize表示长宽;
typedef struct _NSSize{
float width;
float height;
} NSSize;
NSRange表示一个矩形
typedef struct _NSRect{
NSPoint origin;
NSSize size;
}NSRect
关于字符串。
Cocoa中用来处理字符串的类是NSString。
1)创建方式
NSString *name = @"hello";//直接赋值
或
NSString *age = [NSString stringWithFormat:@"age is %i",12]//用 stringWithFormat函数格式化。后面可以带任意多个参数
2)length 方法。可以算出字符个数
name length];//结果是5
3)比较的方式
isEqualString:比较两个字符串的类容是否相同。
== : 比较指针,看是否同一个对象
compare :比较大小,返回结果用枚举类型表示。NSOrderedAscending(左侧的数据比右侧的小),NSOrderedSame,NSOrderedDescending
4)NSString是不可变的,但是可以操作它来生成新的字符串。想改表它的字符是不行的。所以出现了
NSMutableString可变的字符串类。可以通过
appendString 和 appendFormat来添加新的字符串。
关于数组。
NSArrary
可以用类方法arrayWithObjects创建。
NSArray *arr = [NSArray arrayWithObjexts:@"A",@"B",@"C",nil];//nil代表结束。
NSMutableArray代表可变数组,addObject可以添加对象到尾巴上,removeObjectAtIndex删除指定索引的对象。
关于字典
NSDictionary和NSMutableDictionary。
NSDictionary可以使用dictionaryWithObjectsAndKeys:来创建。
NSDictionary *dic = [NSDictionary dictionaryWithObjectsAndKeys:name,@"cat", age,@"18"];
NSMutableDictionary可创建之后动态添加。
NSMutableDictionary *dics = [NSMutableDictionary dictionary];
[dics setObject:name forKey:@"cat"];
。。。
关于基本类型
OC没有自动装箱功能,而NSArray和NSDictionary只能存储对象,那么对于基本数据类型int,float或结构体struct。怎么办?自己包装!
NSValue:包装任意值。
NSRect rect = NSMakeRect(0,0,10,10);
NSValue *value = [NSValue valueWithBytes:&rect objcType:@encode(NSRect)]//第一个参数是要被封装的数据的地址,第二个参数@encode编译器指令可以接受数据类型的名称并为之生成合适的字符串。
[array addObject:value];
常用的struct类型转成NSValue方法:
装箱
+(NSValue *) valueWIthPoint:(NSPoint) point;
+(NSValue *) valueWIthSize:(NSSize) size;
+(NSValue *) valueWIthRect:(NSRect) rect;
取消装箱</P>
-(NSPoint) pointValue;
-(NSSzie) sizeValue;
-(NSRect) rectValue;
NSNumber:包装基本数据类型,NSValue的子类,常用的几个方法
numberWithChar:
numberWithInt:
numberWithFloat:
取消装箱
charValue,intValue,floatValue