文章导航
【iOS新手开发之旅】 http://www.sufeinet.com/thread-24000-1-1.html
OC特点
- 支持C语法
- 支持面向对象特性
- 兼容性好,可以同时在项目中使用OC、C++,也可以引入C、C++库文件
- OC中没有命名空间机制,也没有包的概念,为了区分不同的类,在类名加前缀
- OC中关键字表示都以@开头,用于区分C和C++的关键字,字符串也以@开头,如@public、@protected、@private、@”Hello World”
OC基本数据类型
基本数据类型:数值型(整型、浮点型),字符型(char)、布尔型(BOOL)、空类型(Void)、Block类型、指针数据类型(class、id类型)、特殊类型(SEL、nil)
1、instancetype和id类型
instancetype可以作为返回类型,可以返回和方法所在类相同类型的对象,只能作为返回值
id可以作为返回类型,返回任意类型的objcetive-c的对象类型,既可以作为返回值也可以作为参数
类与属性
1、 类的声明语法
[Objective-C] 纯文本查看 复制代码 @interface Person : NSObject{
属性声明
}
方法声明
@end
特点: - @interface:相当于Java中的class
- 类名后面的冒号:相当于Java中的extends
2、类的实现语法
[Objective-C] 纯文本查看 复制代码 @implementation Person
方法实现{
}
@end
完整例子:
3.创建对象
[Objective-C] 纯文本查看 复制代码 //第一种创建方式:创建一个可用的对象
Person *p=[Person new];
//new方法的内部会分别调用两个方法来完成2件事情
//1、使用alloc方法来分配存储空间(返回分配的对象)
//2、使用init方法来对对象进行初始化
//1、调用类方法+alloc分配存储空间,返回未经初始化的对象
Person *p1=[person alloc];
//2、调用对象方法-init进行初始化,返回对象本身
Person *p2=[p1 init];
//第二种创建方式:以上2步简化为
Person *p=[[Person alloc] init];
//默认初始化完毕后,所有成员变量的值都为0
//用完对象要释放内存
[lisi release];
new方式和alloc/init方式有什么区别?
- new和alloc/init在功能上是一致的,分配内存并完成初始化
- 采用new方式只能采用默认的init方法完成初始化
- 采用alloc的方式可以用自定义的构造方法完成初始化
4.访问对象属性
[Objective-C] 纯文本查看 复制代码 //调用类的属性,语法:对象->属性名
lisi->age;
lisi->name;
//或者:(*对象名).对象属性
(*lisi).name
5.调用方法
[Objective-C] 纯文本查看 复制代码 //调用无参方法,语法:[对象名 方法名]
[Person eat]
[Person run]
//调用有参方法,语法:[对象名 方法名:参数]
[Person eat:@"吃虾"]
[Person run:5]
6.@property和@synthesize
在头文件中声明属性
[Objective-C] 纯文本查看 复制代码 //编译器会自动补出其set和get方法@property int age;
在m文件中实现
[Objective-C] 纯文本查看 复制代码 //编译器会自动生成set和get方法的实现,默认已经自动@synthesize属性的值
@synthesize age;
构造方法
1.默认的构造方法
[Objective-C] 纯文本查看 复制代码 - (instancetype)init{
if(slef = [super init]){
//初始化
}
return self;
}
2.自定义构造方法
一般构造方法都以init开头,这样并不是复写系统默认的构造方法,而是再添加一个构造方法
[Objective-C] 纯文本查看 复制代码 - (instancetype)initWithDict:(NSDictionary *)dict{
if(slef = [super init]){
//初始化并赋值
self.name = dict[@"name"];
}
return self;
}
下一篇 创建第一个iPhone应用程序
|