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

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

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

内容概括:

1、点语法的使用。

2、成员变量的作用域。

3、@property和@synthesize的使用。

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

5、构造方法。

一、点语法

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

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

#import 
@interface Person :NSObject
@property int age;
@end
@implementation Person
@end
int 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 

@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 *)。

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

 

 

 

 

 

你可能感兴趣的:(黑马程序员——OC知识点总结(一))