zoukankan      html  css  js  c++  java
  • ObjectiveC 熟记小概念

    1.定义类: 在.h文件中,

              @interface 类名:父类名

              {

           成员变量;

              }

         成员函数;

         @end;

              在.m文件中,

              @implementation 类名

              成员函数定义;

              @end;

    2.成员函数定义:-(返回值类型)函数名:(参数类型)参数,...

             -(void) setColor:(NSString*)newColor

              {

                 Color=newColor;

              }    

              -(void) setNumber:(int)newNumber

              {

                 Number=newNumber;

              }

    3.实例化类:

              myCar=[Car new];

              [myCar setColor:red];

              [myCar setNumber:Num];

    4. @class指令:

       当一个类中要使用另一个已经定义好的类时,用@class,若要用到其中的方法,则要#import这个类。

    5.内存管理:

       iphone操作系统不支持垃圾回收机制。

       创建一个对象一般用alloc+init,也可用new;

      alloc,copy,retain,release,autorelease;

    6.Foundation框架:

       @import <Foundation/Foundation.h>

       NSString类,NSMutableString类;

       NSArray类,NSMutableArray类;

       NSDictionary类,NSMutableDictionary类;

    7.存取器:

      声明类变量时,可使其成为属性。@property int Number;

      .m文件中,可加入@synthesize Number,自动生成setter和getter方法;

      这样,便可用点操作符访问成员变量,car.Number=27;

    8.创建对象:

      id 对象名=[类名 alloc];

      [对象名 init];

     Boat *boat=[[Boat allco] init];

      Boat *boat=[[Boat alloc] initWithNum:123

                               Color:@"red"];

      一般情况下,init时这样写:

      -init

      {

            if(self=[super init]){

              //初始化操作

            return self;

      }

      有参数时,

      -(id) initWithNum:(int) Num

            Color:(NSString*) Color;

    9.变量作用域:

      没有任何作用域限制时,默认为protected;

    10. @try异常处理:

      @try{}

      @catch(NSException *exception){NSLog(@"Catch exception name :%@; reason:%@;",

                                    [exception name],[exception reason]);}

      @finally{}

    11.类目与协议:

       有时候需要在一个已经定义好的类中加入一些方法而不重写该类,可以使用类目(categories)。

       如已定义一Circle类,CircleCal.h文件中,

       @import "Circle.h"

       @interface Circle(CircleCal)

       -(float) AreaCal;

       -(float) LenCal;

       @end;

       CircleCal.m文件中,

       #import "CircleCal.h"

       @implementation Circle(CircleCal)

       -(float) AreaCal{}

       -(float) LenCal{}

       @end;

       此时便可在main函数中调用新定义的函数;

       ps:类目不能向类中添加实例变量;类目可以覆盖它所要扩展的类中的方法,不过应尽量避免;使用类目对一个类进行扩展时,同样会影响到该类的子类。

       协议是一个方法列表。它声明了一系列方法而不予以实现。协议不是类本身,没有父类,而且不能定义成员变量。

       @protocol Calculating

       -(void) CalculateArea;

       @end;

       @interface Rectangle:NSObject <Calculating>{}

       在定义Rectangle中的成员函数时,也要定义Calculating中的方法,这样才能调用。

       @protocol有两个修饰符:@optional和@required,

       被@optional修饰的方法,在采用该协议的类中可以选择不实现,而采用@required修饰的方法,则必须实现。默认为@required。

  • 相关阅读:
    拥有自己的代码生成器—Newlife.XCode模板编写教程
    基于Newlife.XCode的权限系统(含数据集权限)【设计篇】
    拥有自己的代码生成器—NewLife.XCode代码生成器分析
    利用javascript来转换GB2312到UNICONDE &#形式
    和荣笔记 从 Unicode 到 GB2312 转换表制作程式
    如何做SVN迁移
    和荣笔记 GB2312 字符集和编码说明
    asp对象化之:基于adodb.stream的文件操作类
    Unicode 汉字内码表
    微软建议的ASP性能优化28条守则 之三
  • 原文地址:https://www.cnblogs.com/pinping/p/2126215.html
Copyright © 2011-2022 走看看