一.类的定义
#import <Cocoa/Cocoa.h> // 1
@interfaceStudent : NSObject // 2
{
int age ;
NSString *name ; // 3
}
@property(nonatomic , retain) NSString *name ; // 4
@property(nonatomic , retain) int age ;
-( id )initName : (NSString *) aName andAge : (int) aAge ; //5
-( id )inttName : (NSString *) aName ; // 6
-(void)sayHello ;
@end // 1
注释:
-
#import 告诉预处理器,将头文件的内容包含到本文件中. OC 中的import 能保证头文件只会被包含一次 .
-
@interface关键字:声明一个Student类。@end 结束声明.
冒号:表示继承 后面跟的是父类.
NSObject是大多数对象都会用到的内存管理,和初始化框架,以及反射和类型操作. 相 当于Object。
NS是NextSTEP缩写,表示这个函数来自Cocoa工具包。
-
声明全局变量 , 与C中一样。
-
property关键字:设置成员变量的属性(有读/写,赋值assign,retain,copy ,以及对多线程的支持nonatomic)。
-
声明一个方法,格式是 –(返回值) 方法关键字1 : (参数类型)参数名 方法关键字2 : (参数类型)参数名 …… (在读方法的时候就可以先找方法关键字来确定参数)。
- 减号是实例方法, + 是类方法
二.类的实现
#import “Student/Student.m”
#synthesizename ; //1
#synthesizeage ;
@implementationStudent // 2
-(id)initName : (NSString *) aName andAge : (int) aAge // 实现方法
{
if (self =[super init]) // 3
{
self.name = aName ;
self.age = aAge ;
}
return self ;
}
-( id )initName : (NSString *) aName // 4
{
self = [self initName : aName andAge : 0];
return self ;
}
-(void)sayHello
{
NSLog (”%@”,Hello World) ; // 5
}
@end
注释:
-
#synthesize关键字: 根据@property设置,自动生成成员变量相应的存取方法,从而可以使用点操作符来方便的存取该成员变量 。
-
@implementation 关键字,表明类的实现 @end 结束
-
self 关键字 :类似于java中的this,是隐藏参数,指向当前调用方法的类。
super 关键字 :调用父类的方法。
self = [superinit] 这里不是判断self与[superinit]是否相等,而是判断是否可以成功初始化。[super init]:父类初始化成功的话,通过=给self,这样self成为一个非空对象,整个来说即非false(非NO)。
3. 另一个初始化方法中调用已有的初始化方法 这种概念被称为Designated Initializer.
4. NSLog是OC中的标准输出, 附加输出当时日期, 时间, 应用程序名称 . 使用NSLog()输出任意对象的值时,都会使用%@格式说明。在使用这个说明符时,对象通过一个名为description的方法提供自己的NSLog()格式。
%i BOOL值.
三.对象的生成与方法的调用
#import<Foundation/Foundation.h>
#import “Student/Student.h”
int main( int argc , const char * argv[] ) // 1
{
NSAutoreleasePool *pool =[[NSAutoreleasePool alloc] init ] ; // 2
Student *s1 =[[Student alloc] initName :@” zhangsan ”
andAge : 15] ; // 3
[s1 sayHello] ; // 4
[s1 realease]
[pool drain] //
return 0 ;
}
注释:
-
int argc , const char * argv[] : argv[0] 接受程序名,以后的参数命令行跟的是用户输入参数, argc则是纪录了用户在命令行输入了几个参数
-
创建一个自动释放池 pool
-
创建一个对象 格式 类名 *对象名= [[类 alloc] init初始化数据] ;
alloc是个函数,作用是返回一个指向n个连续字符存储单元的指针,alloc函数的调用者可以利用该指针存储字符序列,在这里是创建一个内存空间给对象,并将全部数据初始化为0。
init 是函数,作用是负责为类中的成员变量赋值。和一般方法没有区别,只是在开头加上了init。
4. 方法调用 格式 [对象名 方法名] 类似于 对象名.方法名;
PS :
-
BOOL : 布尔类型,1或者YES为真, 0 或者NO 为假。
-
@” ” 表示将@后的字符串当成一个NSString 对象。
-
id 这是ObjC新加的一个数据类型,它是一般的对象类型,能够存储任何类型的方法
-
转自:http://appleparty.diandian.com/post/2012-05-14/17828961