oc_语法1

点语法 :是调用成员变量的set、get方法;

为什么要设计点语法 : 方便程序员快速入手oc , 简化程序设计 ,隐藏内存管理细节 ,隐藏了多线程,同步,加锁细节;


[Student new] 等同于 [[Student alloc] init];


方法的声明和实现,都必须以+或-开头;

+ : 表示类的方法(静态方法)

- :   表示对象方法(动态方法)

类方法的好处及使用场景

1,不依赖于对象,执行效率高

2,当方法内部不需要使用到成员变量时,尽量使用类方法

在.h中声明的所有方法都是public类型(通过Category可以实现private)


变量的作用域 

@public 全局都可以访问

@protected 只能在类内部和子类中访问

@private  只能在类内部访问

变量必须定义在类的{}中


如果直接把方法写在。m文件中, 没有在.h中进行声明 ,那么该方法是私有方法;


Property 属性 :

只在。h文件中使用 ,当编译器遇到@property时,会自动展开成getter和setter的声明 ;

property在。h文件中,于@interface同级;

例如 : @property   int    age;

相当于

-(void)setAge:(int)newAge;

-(int)age;

/**

  *set 方法命名规范:

  * 方法名必须以set开头

  * set后面跟上成员变量的名称,成员变量首字母大写

  * 返回值是void

  * 一定要接收一个参数,而且参数类型跟成员变量类型一致。

  * 形参的名称不能和成员变量名称一致

  *  get 方法命名规范

  *  有返回值,且返回值类型与成员变量类型一致

  *  方法名与成员变量名一样

  *  不需要接收任何参数

  */

@synthesize 只用于.m文件中,于@implementation同级;相当于做了getter和setter方法的实现;

@synthesize默认会访问跟 属性同名的变量,如果找不到同名的变量,会自动生成一个同名的私有变量 ;


@synthesize age = _age;代表getter和setter会去访问_age这个成员变量;

在xcode4.5以上的环境下 ,当含有property属性时,@synthesize可省略,编译器自动生成;并且默认会访问_age这个成员变量;

如果找不到_age这个变量 ,会自动生成一个_age的私有成员变量;


@property 字段

在.h文件中,与@interface同级,

@property int age;相当于getter,setter方法声明;

== 

-(void) setAge:(int)age;

-(int)age;





命令行编译.m文件

touch xx.m   创建xx文件

open xx.m    打开xx文件

cc xx.m -framework Foundation  编译xx文件

./a.out   运行编译后的out文件


iOS继承

1,不允许子类和父类拥有相同名称的成员变量

2,调用某个对象的方法时,优先去当前对象中查找,如果找不到,去父类中调用。

继承与组合

继承: xx 属于xxx

A { int _age;}

B : A {

}

组合: xx 拥有xxx

A {  int _age;}

B{

A *_a;

}

多态

1,没有继承就没有多态;

2,代码的体现:父类类型的指针指向子类对象;

3,好处:如果函数参数中使用的是父类类型,可以 传入父类,子类对象;

4,局限:父类类型的变量不能直接调用子类的特有的方法;

例:

NSString *str = [Cat new];

[str eat];

编译时显示warning;“NSString may not respond to 'eat'

但运行成功;因为oc是弱语言;


成员变量作用域

.m文件中声明的变量,默认是private,且无法修改;

.h文件中声明的变量,默认是protected;

@implementation中不能定义与@interface中同名的成员变量






评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值