IOS开发入门

今天的内容是类,方法的定义与实现

一.类的定义

#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

注释:

  1. #import 告诉预处理器,将头文件的内容包含到本文件中. OC 中的import 能保证头文件只会被包含一次 .

  2. @interface关键字:声明一个Student类。@end 结束声明.

冒号:表示继承 后面跟的是父类.  

NSObject是大多数对象都会用到的内存管理,和初始化框架,以及反射和类型操作. 相 当于Object。

NS是NextSTEP缩写,表示这个函数来自Cocoa工具包。

  1. 声明全局变量 , 与C中一样。

  2. property关键字:设置成员变量的属性(有读/写,赋值assign,retain,copy ,以及对多线程的支持nonatomic)。

  3. 声明一个方法,格式是  –(返回值) 方法关键字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

注释:

  1. #synthesize关键字: 根据@property设置,自动生成成员变量相应的存取方法,从而可以使用点操作符来方便的存取该成员变量 。

  2. @implementation 关键字,表明类的实现 @end 结束

  3. 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 ;  

}

注释:

  1. int argc , const char * argv[]  :  argv[0] 接受程序名,以后的参数命令行跟的是用户输入参数, argc则是纪录了用户在命令行输入了几个参数

  2. 创建一个自动释放池 pool

  3. 创建一个对象 格式 类名 *对象名= [[类 alloc] init初始化数据] ;

alloc是个函数,作用是返回一个指向n个连续字符存储单元的指针,alloc函数的调用者可以利用该指针存储字符序列,在这里是创建一个内存空间给对象,并将全部数据初始化为0。

init 是函数,作用是负责为类中的成员变量赋值。和一般方法没有区别,只是在开头加上了init。

4.  方法调用 格式 [对象名 方法名] 类似于 对象名.方法名;

 

 

PS :

 

  1. BOOL  : 布尔类型,1或者YES为真, 0 或者NO 为假。

  2. @” ” 表示将@后的字符串当成一个NSString 对象。

  3. id 这是ObjC新加的一个数据类型,它是一般的对象类型,能够存储任何类型的方法。

发布了59 篇原创文章 · 获赞 5 · 访问量 12万+
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章