OC语言基础
来源:互联网 发布:python实例100例 编辑:程序博客网 时间:2024/05/22 08:53
过程式编程和面向对象对象编程的差别
在过程式编程中,数通常保存在简单的结构体中(如C的struct元素),还有一些较为复杂的数据结构,例如链表和树。当调用一个函数时,将数据传递给函数,函数会处理这些数据,过程式编程建立在函数之上,数据为函数服务。
而在面向对象编程中,不再关注于程序中的函数,而是关注于数据,数据通过间接方式引用代码,代码可以对数据进行操作。
在OC中只要看到@符号,就可以把它看做对C语言的扩展,所有OC语言的关键字都以@开头,字符串也以@开头。
@interface 部分
在创建某个指定类的对象之前,OC编译器需要有一些有关该类的信息,尤其是对象的数据成员及其提供的功能。可以使用@interface指令把这些信息传递给编译器。差不多相当于Java中的class。
//冒号后表示所继承的类,在OC中可以选择不继承,但如果你使用的是cocoa框架,就需要继承NSObject类。@interface Student : NSObject{ int stuId; NSString *name; int age;}//成员变量声明必须在花括号内/*在OC中,减号后被称为方法声明,列出每个方法的名称、方法返回值的类型和某些参数; 减号后面是方法的返回类型,位于圆括号中; 冒号后为参数类型和参数名称。 */- (int)stuId;//getter方法命名以其返回的属性名称命名- (int)age;- (void)setAge:(int)newAge;//setter方法命名以其所更改的属性名称加get前缀@end//告诉编译器,我们已经完成类的声明;非必需,但是提倡;OC编译器指令后不需要分号。
@implementation 部分
在OC中,@interface只是用于定义类的公共接口,而真正能使对象运行的代码位于@implementation部分中。
@implementation Student- (int)stuId{ return stuId;}- (int)age;{ return age;}- (void)setAge:(int)newAge{ age = newAge;}@end@implementation是一个编译器指令,表明你将为某个类提供代码,类名出现在@implementation之后。
接下来是各个方法的定义。它们不必按照在@interface指令中的顺序出现,你甚至可以在@implementation中定义那些在@interface中没有声明过的方法,可以把它们看做是仅能在当前类实现中使用的私有方法。
@interface和@implementation间的参数名不同是允许的。
实例化对象
在OC中创建一个新的对象有两种方法。
Student *stu1 = [Student new]; Student *stu2 = [[Student alloc] init];
new是较为老式的写法,后来发现只有一个new不好使,才引入了alloc和init这种写法,保留new一是向后兼容,二是很多时候是一种更简单的写法。其实是一样的,new在内部调用的alloc和init。
alloc方法分2步,先调用静态无参函数alloc申请内存,再调用静态无参函数init初始化
1. Student *stu = [Student alloc];//仅仅为对象分配内存空间
2. stu = [stu init];//真正创建对象
以上2步一般简写为: Student *stu = [[Student alloc] init];
int main(int argc, const char * argv[]) { Student *stu = [[Student alloc] init]; //设置 [stu setAge:100]; //获取 NSLog(@"age is %i",[stu age]); [stu release];//对象使用完毕要释放内存 return 0;}
- oc基础语言
- OC语言基础 - 01
- OC语言基础
- OC语言--基础语法
- OC语言基础--属性
- OC语言基础
- OC语言--OC语言基础、类
- 黑马程序员-OC语言基础:OC特有语法
- OC语言基础内容 类的定义 第一个OC
- 黑马程序员-OC语言基础学习(一)
- 黑马程序员-OC语言基础学习(二)
- 黑马程序员-OC语言基础学习(三)
- 黑马程序员-OC语言基础学习(四)
- 黑马程序员-OC语言基础学习(五)
- 关于OC语言基础的总结
- 黑马程序员-OC语言基础
- 黑马程序员IOS-OC语言-简介、基础
- OC基础语言学习1:初探
- linux上的mysql插入中文报错问题解决
- arp欺骗进行流量截获-2
- 大学没有教过我
- 【一步步学OpenGL 9】 -《插值》
- MacBook插件名称
- OC语言基础
- Software Engineering
- scalaIDE 与spark2.0 源代码关联
- Java算法之二--二进制1的个数问题--位运算
- CI的session操作
- Android杂谈(14)OKHttp+Gson的简单使用
- EasyPlayer Android音频解码库(第二部分,封装解码器接口)
- Spring AOP 和@Autowired 的问题
- jquery购物车数量加减