objective-c 编程基础(一 基础语法)

来源:互联网 发布:快递单打印软件注册码 编辑:程序博客网 时间:2024/06/05 15:21

先看一下oc的头文件名和实现文件名

  

 类的定义

 类的定义是一对

@interface SimpleClass:NSObject@end
 SimpleClass 是类名,:NSObject 代表改类继承 NSObject

类的属性声明:

@interface SimpleClass:NSObject@property NSString*firstName;@property NSString*lastName;@end
 声明了一个NSString类型的firstName对象,*表示指向一块堆内存,*表示声明的是一个对象
@property NSNumber *yearOfBirth;@property int yearOfBirth;@property (readonly) NSString *firstName;

上面这3个,第一种,是声明了yearOfBirth对象;第二种 ,是一个基础类型,不是对象;第三种,前面有( readonly)说明它是一个只读的对象,不可以写,只能获取它的值;

这里再介绍一下@property这个关键字,变量的声明语法为:

@property(attribution)Vartype  Varname;//属性在()里来定义,然后是变量类型、变量名。

OC提供的属性有:

读写属性: (readwrite/readonly)以及(getter=name)、(setter=name)

setter语意:(assign/retain/copy)  

对于Objective-C中的一般object,最好使用用retain。一些特别的object(例如:string)使用copy。

而assign关键字代表setter直接赋值,而不是复制或者保留它,更不需要进行引用计数。这种机制非常适合一些基本数据类型,比如NSInteger和CGFloat,或者你并不直接拥有的类型,比如delegates((且一定要用assign,具体原因暂时不知道,读者看到这里可以留言给我,告诉我答案)。

原子性: (non)atomic

注意:其实加了@property的代码可以这样展开:

@property ( nonatomic , assign ) int sid;展开为

int _sid;

@property ( nonatomic , retain ) Book * mBook;展开为

Book* _mBook;

其实就是自动生成了set和get方法,而且属性前面加了_,访问的时候必须这样访问 _mBook, 访问的时候不加_,会报错

 其实减号就是一个普通的函数,void代表没有返回值



  上面的id类型代表通用类型,相当于java的Object 类型

  在oc中,类的实现是放在.m 文件中的,完整的例子,如下图:


 上面是声明类一个类,类名是XTZPerson,继承 NSObject,有一个方法sayHello, 这里不写实现的,具体实现在.m文件里面写。实现某个类的时候,要用一个关键字implementtation, 然后实现这个类的方法,这里的NSLog其实就是一个打印语句,会输出到控制台,里面的@符号代表它是一个oc类型的字符串,如果不加@,说明它是一个c语言的字符串(其实是一个数组数组)。


0 0
原创粉丝点击