cocoa
类:
传统的写法:
Demo.h
// // Demo.h // demoClass // // Created by 王 on 13-12-16. // Copyright (c) 2013年 Bo Li. All rights reserved. // #import <Foundation/Foundation.h> @interface Demo : NSObject { int age; int ide; NSString *name; } //初始化方法 -(id)initWithAge:(int)_age andIde:(int)_ide andName:(NSString *)_name; -(void)setAge:(int)_age; -(int)getAge; -(void)setIde:(int)_ide; -(int)getIde; -(void)setName:(NSString *)_name; -(NSString *)getName; @end
Demo.m
// // Demo.m // demoClass // // Created by 王 on 13-12-16. // Copyright (c) 2013年 Bo Li. All rights reserved. // #import "Demo.h" @implementation Demo //初始化方法,只有[super init]初始化父类成功后子类才能初始化 -(id)initWithAge:(int)_age andIde:(int)_ide andName:(NSString *)_name{ if(self = [super init]){ age = _age; ide = _ide; name = _name; } return self; } -(void)setAge:(int)_age{ age = _age; } -(int)getAge{ return age; } -(void)setIde:(int)_ide{ ide = _ide; } -(int)getIde{ return ide; } -(void)setName:(NSString *)_name{ name = _name; } -(NSString *)getName{ return name; } @end
main.m
// // main.m // demoClass // // Created by 王 on 13-12-10. // Copyright (c) 2013年 Bo Li. All rights reserved. // #import <Foundation/Foundation.h> #import "Test.h" #import "Demo.h" int main(int argc, const char * argv[]) { @autoreleasepool { // insert code here... NSLog(@"Hello, World!"); Demo *d = [[Demo alloc] initWithAge:15 andIde:212321 andName:@"lily"]; NSLog(@"she is %d,and hers identify is %d,she names %@",[d getAge],[d getIde],[d getName]); } return 0; }
OC特有的用法(设置器@property和访问器@synthesize)
Demo.h
// // Demo.h // demoClass // // Created by 王 on 13-12-16. // Copyright (c) 2013年 Bo Li. All rights reserved. // #import <Foundation/Foundation.h> @interface Demo : NSObject { int age; int ide; NSString *name; } //初始化方法 -(id)initWithAge:(int)_age andIde:(int)_ide andName:(NSString *)_name; @property(nonatomic) int age; @property(nonatomic) int ide; @property(nonatomic,retain) NSString *name; @end
Demo.m
// // Demo.m // demoClass // // Created by 王 on 13-12-16. // Copyright (c) 2013年 Bo Li. All rights reserved. // #import "Demo.h" @implementation Demo //初始化方法,只有[super init]初始化父类成功后子类才能初始化 -(id)initWithAge:(int)_age andIde:(int)_ide andName:(NSString *)_name{ if(self = [super init]){ age = _age; ide = _ide; name = _name; } return self; } @synthesize age; @synthesize ide; @synthesize name; @end
main.m
// // main.m // demoClass // // Created by 王 on 13-12-10. // Copyright (c) 2013年 Bo Li. All rights reserved. // #import <Foundation/Foundation.h> #import "Test.h" #import "Demo.h" int main(int argc, const char * argv[]) { @autoreleasepool { // insert code here... NSLog(@"Hello, World!"); Demo *d = [[Demo alloc] initWithAge:15 andIde:212321 andName:@"lily"]; NSLog(@"she is %d,and hers identify is %d,she names %@",[d age],[d ide],[d name]); } return 0; }
备注:
在@property()得括号中,可以填写的属性有:
readwrite:默认
readonly:只读,意味着没有set方法,只有get方法
assign:默认,引用计数不增加(一般用于基本数据类型,如int)
retain:引用计数增加(一般用于对象方面,如NSString *name)
actomic:默认,原子性
nonatomic:非原子性。是OC中一种线程保护技术,防止在未完成的时候,被另外一个线程使用,造成数据错误。
点语法:(看下面代码即可明白)
// // main.m // demoClass // // Created by 王 on 13-12-10. // Copyright (c) 2013年 Bo Li. All rights reserved. // #import <Foundation/Foundation.h> #import "Test.h" #import "Demo.h" int main(int argc, const char * argv[]) { @autoreleasepool { // insert code here... NSLog(@"Hello, World!"); Demo *d = [[Demo alloc] initWithAge:15 andIde:212321 andName:@"lily"]; d.age = 10; d.name = @"hhaa"; NSLog(@"she is %d,and hers identify is %d,she names %@",[d age],[d ide],[d name]); } return 0; }
static关键字:
类体内的全局变量声明。
static int count = 1000;
要点:
1.声明在任何方法之外;
2.在该文件内;
3.所有位于这条语句之后的方法都可以访问count得值,而其他文件中的方法则不可。
UIKIT
UIView:视图的基础,
UIViewControl:视图控制器的基类,
UIResponder:表示一个可以接收触摸屏上的触摸事件的对象。
窗口(UIWindow):
窗口是视图(UIView)的一个子类。
窗口的主要功能:
1.提供一个区域来显示视图;
2.将事件(event)分发给视图;
注意:一个应用通常只有一个窗口,但是也有例外。
UIScreen:获取硬件设备的屏幕尺寸,在做适配的时候用到,比如iphone的屏幕和ipad的屏幕。
IOS坐标系统:
CGPoint potin = CGPointMake(x,y);//位置
CGSize size = CGSizeMake(w,h);//大小
CGRect rect = CGRectMake(x,y,w,h);//位置和大小。
Frame,Bounds,Center:
Frame:以其父视图为起点,得到他自己的位置信息;
Bounds:以IOS的坐标(0,0)为原点;
Center:表示视图中心点所在位置。
创建视图:
//通过xib的方式来创建视图对象 NSBundle *bundle = [NSBundle mainBundle]; NSArray *arr = [bundle loadNibNamed:@"myView" owner:self options:nil]; UIView *myView = [arr objectAtIndex:0]; //通过代码创建视图对象 CGRect viewRect = CGRectMake(0, 0, 100, 100); UIView *myView = [[UIView alloc] initWithFrame:viewRect];
视图调用方法(视图的层次关系):
//基本的添加和删除子视图 addSubview: //添加子视图 insertSubview:atIndex: //视图插入到指定索引位置 insertSubview:aboveSubview: //视图插入指定视图之上 insertSubview:belowSubview: //视图插入指定视图之下 bringSubviewToFront: //把视图移动到最顶层 sendSubviewToBack: //把视图移动到最底层 exchangeSubviewAtIndex:withSubviewAtIndex: //把两个索引对应的视图调换位置 removeFromSuperview: //把视图从父视图中移除
备注:当调用addSubview的时候会对其进行保留,可理解为retain一个对象;
当调用removeFromSuperview的时候会对其进行释放,可理解为release一个对象。