IOS语言Object-c语言随笔(三)

Objective-C面向对象的特性

面向对象最重要的概念就是类,通过类可以实现面向对象两个主要的特性:继承和聚合

NSObject是所有类的根类

1.类的定义

都在 .h文件中进行,典型的定义如下

@interface FirstViewController : UIViewController
{
    NSString *name;
    NSArray *array;
    ...
}
@property(nonatomic,retain)NSString *name;
@property(nonatomic,retain)NSString *array;
-(id)initWithName:(NSString*)string;
...
@end

(1)类的定义由@interface开始,到@end结束

(2)类名后面紧跟冒号和所继承的父类名

(3)花括号里定义类的成员变量

(4)属性由@property关键字声明

(5)方法声明在成员声明之后,@end之前

2.方法

方法类似函数,由返回值,方法名,参数列表组成。返回值与参数类型使用圆括号括住,有几个参数方法名就被分成几个部分,每个部分都有一个冒号,冒号后面才是参数类型和参数,方法前面有个方法类型符,+表示类方法,-表示实例方法。例如

-(id)initWithName:(NSString*)string withArray:(NSArray*)arr;

实例方法必须通过类的实例调用,类方法可由类直接调用。类似(java中的static方法)

上面方法有两个参数,因此方法由两部分组成initWithName:和withArray

Objective-C中还存在可变参数的概念比如说NSString的stringWithFormat方法:

+(id)stringWithFormat:(NSString*)format,...;

第二个参数就是 一个可变参数,这样的参数并不知道具体的类型,也不知道参数的数目,这些都要通过前面已经知道的format来确定

3.属性

Objective-C在将实例变量声明为属性的时候,首先要声明实例变量,然后用@property关键字,如上面的那个name。

然后在.m文件中使用@synthesize<属性名>;语句。就会自动生成get与set方法

nonatomic关键字的意思是非原子的,意思就是非线程安全,若两个线程同时操作一个读取,一个修改,属性值是不一样的,我们依然使用这个属性的原因是,必须保证我们不会在多线程下使用该属性,使用非原子属性我们会得到更好的性能。

retain说的是属性在赋值之后在对象销毁之前都是可用的,这涉及到了内存的管理,以后再说。

此外还有readonly和readwrite只读和可读可写。



评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值