OC和Java
1-OC和Java中迭代
NSSet *set1 = [NSSet setWithObjects:@"one", @"two", @"two", nil]; NSEnumerator *e = [set1 objectEnumerator]; NSString *s; while((s = [e nextObject]) != nil) { NSLog(@"%@", s); }
2-数组转集合
NSArray *arr2 = @[@"one", @"one", @"two", @"tow"]; NSSet *set = [NSSet setWithArray:arr2]; NSLog(@"%@", set);
3-Map
NSDictionary *dic = [NSDictionary dictionaryWithObjectsAndKeys:@"IOS", @"1", @"Android", @"2", @"cocos2d-x", @"3", nil]; NSLog(@"%@", dic); NSArray *keys = @[@"1", @"2", @"3", @"3"]; NSArray *values = @[@"Android", @"iOS", @"cocos2dx", @"wp8"]; NSDictionary *dc3 = [NSDictionary dictionaryWithObjects:values forKeys:keys]; NSLog(@"%@", dc3);
4- id 和 intanceoftype
①instancetype可以返回和方法所在类相同类型的对象,id只能返回未知类型的对象;
②instancetype只能作为返回值,不能像id那样作为参数,比如下面的写法:
5- @property
增加了property属性 则不需要在头文件中写set get方法
直接在.m文件中使用setName和getName方法
@property NSString *name; 相当于声明了set和get方法
@synthesize name; 相当于在实现了set和get方法
以上2句结合使用 相当于 1)定义了name变量 2)在头文件中声明了set和get方法 3)在.m中实现了set和get方法
@synthesize 声明d的的属性=变量。意思是,将属性的setter,getter方法,作用于这个变量。 而后文中可以直接使用_name
6- UIViewController
IOS中的 UIViewController相当于Android中的activity
7- 当按钮拖住点击到m文件中添加一个属性之后 会 在右侧的Referencing Outlet中出现
8-xib关系
用Xcode的模板加入UIViewController sub class时,勾选with xib for interface项会随之一起生成三个后缀名不同(.h .m .xib)的同名文件。
之后在工程项目中若是用这个自定义的UIViewController,可以采用以下两种方式定义:
CustomViewController *customViewController = [[CustomViewController alloc] initWithNibName:nil bundle:nil];
CustomViewController *customViewController = [[CustomViewController alloc] init];
因为相应的xib文件是与自定义的视图控制器同名的,所以都能够正确加载。即使是简单初始化init或是给initWithNibName:方法传参数nil都是可行的。
但是如果xib文件名与其类的名字不同,则一定要显式提供xib正确的文件名。
牢记:通过Nib文件加载viewcontroller的各种UI控件时时,在viewDidLoad函数里,viewController的控件才能使用。在viewcontroller的构造函数里,nib里的控件都还没有完成链接构造呢。
9- 枚举要定义在 类里面 太坑了 定义在类外边引用不了