您的位置:首页 > 其它

OC-核心语法1

2015-07-09 07:24 309 查看

1. 点语法:对象调用方法

上述完整方法为- (void)setAge:(int)age;

1> 如何判断set和get方法:

如果赋值,则是set方法。

eg:stu.age = 10;

否则是get方法。

eg : int age = stu.age;

2>注意:一定要与访问成员变量区分:

访问成员变量:p->_age;

2.成员变量作用域

@public:任何地方都可以直接访问(任何地方直接访问)

直接访问:p->_age=20;

@private:只能在当前类的对象中访问(当前类的对象直接访问,成员属性属于哪个类,则只有那个类可以访问)

eg:

@interface Person : NSObject  // 声明Person类
{
@private
int _age; // _age属性只能被Person类访问
}
- (void)setAge:(int)age; // age属性的setter和getter方法
- (int)age;
@end
@implementation Person  // 实现Person类
- (void)setAge:(int)age
{
_age=age;
}
- (int)age
{
return _age;
}
@end
@interface Student : Person (定义student类,继承Person类)
- (void)study; // 声明学习的方法
@end
@implementation Student  // 实现Student类
- (void)study
{
[self setAge:20]; // 通过setter方法访问父类的私有对象
}
@end

注意点:如果子类访问此属性,则只能通过setter和getter方法访问。

@protected:可以在当前类以及子类中对象访问(当前类和子类的对象直接访问,默认)

@package:在同一框架中可以访问,介于@private和@public之间

注:

(1)在@interface声明中自定义变量类型是 @protected

(2)在@implementation实现中自定义变量类型是@private

@implementation Person
{
int _age; // 此对象是私有的
}
@end

(3)@implementation不能定义和@interface同名的成员变量

3.@property 和 @synthesize

1>@property:

可以自动生成某个成员变量的setter和getter的方法声明

eg:@property int age; // 会自动生成_age成员变量

// int是get方法的返回值类型和set方法的形参类型。 age是set形参名和get的方法名

自动生成 - (void)setAge:(int)age;

(int)age;

2>@synthesize

自动生成set方法和get方法的实现,并且会访问_age这个成员变量

eg:@synthesize age = _age; // 代表形参age会访问_age这个成员变量,如果无_age,则会自动生成

@synthesize age; // 代表默认访问age成员变量,如果没有,则自动生成age成员变量

//如果_age在类中不存在,则会自动生成@private类的age

注:1.如果手动实现了setter方法,则编译器就只会自动生成getter方法

如果手动实现了getter方法,则编译器自动生成setter方法方法

3>注意点

(1)方法调用时,会优先调用手工编写的方法,如果没找到再调用自动生成的方法。

(2)@property会自动生成_成员变量名。

eg: @property age; // 自动生成_age,类型是@private;

@synthesize 会自动生成 成员变量名。

eg: @synthesize age; // 自动生成age,类型是@provate;

(3)重点例子:

@interface Person : NSObject // 声明Person类
@property int age;
@end
@implementation Person
@end

解析:@property int age代码有如下三个作用:

1>生成_age成员变量。

2>声明 _age成员变量的setter和getter方法

3>实现_age成员变量的setter和getter方法

4. id

概念:万能指针,能指向或操作任何OC对象。(已经包含了* ,在调用时不需要加)

相当于NSObject

eg: id d= [student new]; // 使用student类创建对象d

或者 NSObject *d = [student new]; // 多态语法
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: