黑马程序员-----------ios培训 oc核心语法一

来源:互联网 发布:mac灰色和银色那个好 编辑:程序博客网 时间:2024/04/30 23:20

                     ------<a href="http://www.itheima.com" target="blank">Java培训、Android培训、iOS培训、.Net培训</a>、期待与您交流! -------

一.点语法     点语法:点语法本质是方法调用          
例:p.age = 10  --->[p setAge : 10] 
    p.age ----> [p age];
二.成员变量的作用域
    1. public :在任何地方都能直接访问对象     
    2.private :只能在当前类的对象方法中直接访问,但是子类中拥有成员变量,能通过set get方法访问。
    3.protected:能在当前类和子类的对象方法中直接访问(默认情况下都为protected)     
    4.package :  只要处于同一框架就能直接访问对象的成员变量。
    5.在声明中定义的成员变量默认情况下是protect类型的 ,在实现中定义的成员变量默认情况下是private类型的。
三.@property和@synthesize
    1.@property能自动生成成员变量的set和get方法
    2. @synthesize能自动生成成员变量set和get方法的实现
   例 
#import<Foundation/Foundation.h>@interface Person :NSObject{int _age; } @property int age; @end @imlementation Person @synthesize age = _age;  @end

 相当于一下代码
 
 

#import<Foundation/Foundation.h>  @interface Person : NSObject { int _age; } - (void)setAge:(int)age; - (int)age; @end @implementation Person   - (void)setAge:(int)age;  {  _age = age;  } - (int)age{return _age;}

2.@property

如果没有声明成员变量

#import<Foundation/Foundation.h>@interface Person :NSObject @property int age; @end @imlementation Person @synthesize age = _age;  @end

以上代码自动生成成员变量_age,且为private类型。

@shnthesize特性:

(1)如果在实现中手动实现了get方法 那么系统只会自动生成set方法 和成员变量 

(2)如果在实现中手动生成了set方法 那么系统中只会自动生成get方法和成员变量。

XCODE4.4以后@property独揽了@synthesize的所有功能。

四.   id是万能指针。

五. 构造方法:

1.完整生成一个可用的对象分为两步

例:Person *p = [Person new];

      可分为以下两步

       Person *p1 = [Person alloc];

        Person *p2 = [p1 init];

    以上两步又可以有以下过程代替:

Person *p3 = [[Person alloc] init];

自定义构造方法的规范:

1.一定是对象方法,一定以“_"开头;

2. 返回值一般是Id类型;

3.方法名一般以init开头,

例 :

外界设置名字

- (id)initWithName:(NSString *)name{if(self = [super init]){_name = name}return self;}

外界设置年龄:

- (id)initWithAge:(int)age{if(self = [super init]){_age = age}return self;}

同时设置年龄和姓名:

- (id)initWithName:(NSString *name)name andAge:(int)age{if(self = [super init]){_name = name;_age = age}return self;}

创建一个分类,且在加一个学号的情况下同时设置年龄和姓名:

- (id)initWithName:(NSString)name AndAge:(int)age andNo:(int)no {if(self = [super initWithNamename andAge:age ]){_no = no;}return self;}



0 0
原创粉丝点击