黑马程序员——OC知识点总结(一)

来源:互联网 发布:网站建设搜索优化 编辑:程序博客网 时间:2024/06/09 13:08

黑马程序员——OC基础---基础语法(一)

------- android培训ios培训、期待与您交流! ----------

内容概括:

1、点语法的使用。

2、成员变量的作用域。

3、@property和@synthesize的使用。

4、简化语法,和万能指针。

5、构造方法。

一、点语法

实质:点语法的本质就是方法调用。

例:创建一个person类,这个类有age属性,用它声明一个变量p,可用如下表示方法。

#import <Foundation/Foundation.h>@interface Person :NSObject@property int age;@end@implementation Person@endint mani(){    P.age = 18; // 等价于[ p setAge:18 ];    int a = p.age;  // 等价于 int a = [p age]; }


注意:在set方法或get方法中使用同样含义的点语法,将导致死循环。

      点语法只可调用set方法和get方法,其余不可调用。

二、成员变量的作用域

1、private 只能在当前类的实现@implementation中直接访问。

2、@protect 可以在当前类及子类的实现@implementation中直接访问。

3、@public 在任何地方都可以直接访问。

4、@package 同一个“体系”内可以直接访问,介于@private和@protect之间。


三、@property和@synthesize 的使用。

@property int age;

1、语句自动生成getter和setter的声明。

2、句中的age不是成员变量名,而是方法名。

@synthesize age = _age;

1、语句自动生成getter和setter的实现。

2、隐含的set实现语句_age = age,隐含的get实现语句 return _age。

3、语句中的_age是成员变量名。

示例:

#import <Foundation/Foundation.h>@interface Person : NSObject{    int _no;        @public // 在任何地方都能直接访问对象的成员变量    int _age;            @private  // 只能在当前类的对象方法中直接访问    int _height;        @protected // 能在当前类和子类的对象方法中直接访问    int _weight;    int _money;}

注意

1、声明在@interface中的成员变量默认作用域是@protect。

2、声明在@implementation中的成员变量默认作用于是@private。

3、在@interface中和@implementation中不可声明同名变量。

4、上述代码所说直接访问是指 p->age的方式直接访问。


四、简化写法,和万能指针 

#import < foundation/foundation.h >@interface Dog : NSObject@property int age;@end;

上述代码完成了三件事。

1、声明了一个名为_age的成员变量。

2、对_age的get方法和set方法做了声明。

3、对_age的get方法和set方法做了实现。

弊端:这种写法成员变量的作用于默认为private。

注意:Xcode特性

1、@synthesize age;语句没有声明访问的变量时,默认为访问与该名称一致的变量,如果这个变量不存在,就自动生成这个变量。

2、Xcode特性

   @implementation

   @end

1.没有set方法和get方法会自动生成该方法,并返回下划线开头的成员变量。

2.手动写了方法,或设置了变量,采用手动写的,否则自动生成。

 

万能指针;id:能指向\操作任何OC对象,相当于(NSObject *)。

总结:可用于指向所有类型的对象,应用于返回不同类型对象的函数。

 

 

 

 

 

0 0