OC - 初学01
来源:互联网 发布:java从文本中读取数据 编辑:程序博客网 时间:2024/06/06 03:02
刚开始学OC,使用的是Xcode4.5.1 PS:希望大家能补充和纠错,共同进步!
Objective-C
1.OC是一门基于C的面向对象语言,是C语言的一个超集,同时具有C语言的特征
2.OC对类的定义和实现以及初始化
//声明类接口,继承NSObject对象(该对象是OC中所有类的顶级父类,所有类都继承于它)
//.h 文件中
@interface ClassName :NSObject
//成员属性和成员函数的声明
+(void)function;//类方法,不需要实例化对象就可以调用的方法
- (void)function2 :(NSString *)arg;//成员方法,必须通过实例化的对象调用
@end
//注:符号“:”表示该方法必须提供参数。方法名与参数值用:隔开,参数值与参数值之间也是用:隔开。即参数的个数=“:”的个数
//实现类.m文件
@imlementation ClassName
//成员属性初始化和方法的定义
@end
对象的初始化:方法一:ClassName *obj = [[ClassName alloc] init];
方法二:ClassName *obj = [ClassName new];//这种类似java
OC中以消息机制传递信息,发送alloc消息给类分配内存空间,发送init消息生成对象,指针指向对象本身。
3.类方法的调用
[obj function];
NSString *str = [NSString stringWithString:@"hello"];
[obj function2 : str];
4.输出函数
根据不同的输出格式输出不同的值 (%d :整形 ,%@:对象<发送description消息>,%s:字符串)
NSLog(@“The result is %d”,intNum);
CF代表Core Foundation (Cocoa)
CFShow发送description给它显示的对象,CFShow打印的信息不会显示时间戳,NSLog会显示,同时CFShow不需要格式字符串,它只能用于对象
CFShow(obj);
5.属性
支持点表示法:myTableViewCell.textLabel.text = @"hello" 等价于 [[myTableViewCell textLabel] setText:@"hello"];
使用属性生成器 property
在h文件中声明: @property int year
在m文件中合成生成器:@synthesize year
使用 obj.year = 1999 相当于调用了 [obj setYear:1999];
可以自定义取值方法和赋值方法(getter and setter)
-(int)year
{
return year;
}
- (void) setYear : (int) newYear
{
//此处添加了一些基本的内存管理方法,保留新的值,释放以前的值
if(newYear != year)
{
[year release];
year = [newYear retain];
}
}
也可以绕过oc的命名约定,自己指定getter和setter方法的名称;
@property(getter = isExist,setter = setExist:) BOOL exist;
@synthesize exist;
使用过程中既可以使用新定义的方法名,也可以使用以前的方法(点表示法)
ps:以下copy的
属性的特性:readwrite readonly assign retain copy nonatomic
assign:默认行为,使用@property int year就使用了assign行为,就是给实例变量赋了一个值
retain:实现了两个功能,一个是保留了赋值时传递的对象,其次是赋值前释放了以前值,使用retain可以实现上面讨论的内存管理的优点,使用时加上 @property (retain)int year;
copy:发送一条复制的消息给被传递的对象,保留它,并释放任何以前的值;
nonactomic:非原子访问器,加上后可以提升访问速度,但当两个线程同时修改同一个属性时就会出现问题,原子属性可以保证属性在被一个线程使用时不被另一个线程访问,不存在atomic关键字,默认情况下,所有方法都是自动合成的。(类似与java中的线程锁机制synchronized)
readwrite:可读写
readonly:只读
- OC - 初学01
- oc初学
- 初学OC
- oc初学疑问
- 连载二 初学OC
- oc初学心得
- ios OC初学
- 初学OC第一天整理
- OC初学习的心得
- 初学OC控件拖动操作
- 黑马程序员——OC语言初学
- 黑马程序员-初学OC中的内存管理
- oc中NSFileHandle的初学-文件读取
- 连载三:初学OC之感
- 【初学】iOS学习笔记-@property @synthesize oc=_oc
- 黑马程序员 _11 OC基础 Foundation框架初学
- 黑马程序员 初学OC的一些注意总结 1
- 黑马程序员 初学OC的一些注意总结2
- JAVA读取WORD,EXCEL,POWERPOINT,PDF文件的方法
- 解说一个简单的Win32程序
- java泛型总结
- 接口操作——ioctl
- java通过jxl.jar实现excel导入导出
- OC - 初学01
- iOS 禁止屏幕旋转的方法
- ubuntu10.10系统安装(win7硬盘下安装)
- 字符串、字符相关
- Add a User to a Group (or Second Group) on Linux
- tabhost activity 手势滑动
- 提取EXCEL文本链接中的链接地址
- 如何掌握程序语言
- sql双字段排序,并且2个字段都为空('')的记录放最后面