zoukankan      html  css  js  c++  java
  • ObjC 初识

    1、Obj-C代码的扩展名为“.m”.

    2、Obj-C的要包含头文件时,可以使用  #include  但更一般的使用  #import  ( 由GCC编译器提供),后者可以保证头文件只被包含一次(l类似C中的#ifdef)。

    3有关Cocoa 的框架,可参照

    http://www.cocoachina.com/newbie/basic/2009/0611/130.html

     4、hello Objecitve-C

    #import <Foundation/Foundation.h>

    Int main(int argc, const char *arge[])

    {

      NSLog (@”Hello Obj-C!”);

      Return (0);

    }

    NSLog()函数中的NS:Cocoa对所有函数、常量和类型名称都添加了NS前缀。(NSLog(@”%d is  a  %@”,a,@”num”);)

    @”Hello Obj-C!”:obj-c添加的特性,双引号中的 字符串前有一个@,表示引用的字符串应该作为Cocoa的NSString元素处理。

    5、c中的bool的true和false对应Cocoa中的BOOL的YES和NO()1个字节.(注意:在obj-c中不能理解 非零值为YES,1不等于YES)

    6、Id 类型

          在Objective-C 中,id 类型是一个独特的数据类型。在概念上,类似Java 的Object 类,可以转换为任何数据类型。换句话说,id 类型的变量可以存放任何数据类型的对象。在内部处理上,这种类型被定义为指向对象的指针,实际上是一个指向这种对象的实例变量的指针。id 是一个指向任何一个继承了Object(或者NSObject)类的对象。需要注意的是id 是一个指针,所以在使用id的时候不需要加星号。http://book.51cto.com/art/201105/262238.htm

    7、obj-c中的方括号:

    用于通知某个对象该干什么。在方括号中,第一项是对象,其余部分是你需要对象执行的操作(调用函数)。

    8、方法声明与调用:

    @interface Circle : NSObject

    {

      ShapeColor  fillColor;

      ShapeRect   bounds;

    }//创建两个实例变量

    - (void) setFillColor: (ShapeColor) fillColor;

    - (void) setBounds: (ShapeRect) bounds;

    - (void) draw;

    @end // Circle

     

     

    @interface Circle : NSObject  ---定义了Circle的 类,该类是基于NSObject的,即继承。

    - (void) draw; 前面的短线表示这是obj-c中的方法声明,这是一种区分函数原型与方法声明的方式;void代表返回值为空,draw为方法名。

     

    - (void) setFillColor: (ShapeColor) fillColor;

    - (void) setBounds: (ShapeRect) bounds;

    这两个声明的方法中都有一个参数, (参数类型)参数 

    有如:

    -(void) setTo: (int) n over: (int) d

    {
    numerator = n;
    denominator = d;
    }

     [aFraction setTo: 100 over: 200];//调用

    注:objective-c 的方法参数名有些怪异,第一个参数是没有参数名的,如果硬要说有,那就是方法名,

    统一说来,见到冒号,冒号前面那个就是参数名。 

     

    再举例,没有参数名的方法定义与调用:

     

    -(int) set: (int) n: (int) d;

    [aFraction set: 1 : 3];//调用

    http://www.cnblogs.com/54007/archive/2011/02/10/1950801.html

    @interface为类的声明,一般在头文件中;@implementation为类的实现,一般在”.m”文件中,接下来就是各个方法的定义,不必按照@interface中的顺序定义方法,甚至可以定义在@interface中无相应声明的方法。@interface和@implementation方法的形式参数名要避免相同。

     

    9、实例化对象:id ivars = [Class new];

     

    10、每个方法的调用都包括了一个名为self的隐藏函数,同时对象本身。使用self参数后,方法可以查找并操作对象的数据(this指针)。

     

    11、继承:e.g. @interface Circle : NSObject

       Obj-c不支持多继承,例如:@interface Circle : NSObject , PrintableObject是不能够被编译器识别的。但是可以从其他特性吸收多继承的优点:如分类、协议。

     

    12、重构:移动和简化代码的方式。

     

    13、obj-c中的super相当于调用父类的方法,在重写方法中充分利用超类代码。

     

    14、description:

    -------------------------------------------------------

        @interface Tire :NSobject
    @end

    @implementation tire

    -(NSstring *) description
    {
    return(@"i am a tire");
    }

     

        NSLog (@"%@", tires);

     

    descriptong方法默认返回对象的描述信息,
    NSLog(@"%@", objectA);这会自动调用objectA的descriptong方法来输出ObjectA的描述信息,
    当我们重写某个类的descriptong方法后,
    再次输出NSLog(@"%@", objectA);时,就会调用我们覆写的descriptong方法,这样就达到自定义对象的描述信息!!!

     

    15、存取方法(accessor method):用来读取或改变对象特定属性的方法。如setter、getter方      法(注意:setter方法的方法名一般加set前缀,e.g.setEngine,getter则根据返回的属性的名称来命名,e.g.engine.因为get在cocoa中有特殊含义,它意味着这个方法会通过你当做参数传入的指针来返回数值)。

    在对其他对象的属性进行操作时,应该始终使用对象所提供的存取方法,永远不要直接改变其他对象属性的数值。如,main函数不应直接访问类的实例变量。这也是间接的一种体现。

     

    16、exit()函数:exit(1)表示发生错误后退出程序,exit(0)表示正常退出。参数0和1是返回给操作系统的,操作系统根据参数判断程序是否正常执行了。(that is 防御式编程)

     

    17、Obj-C中所有对象间的交互都是通过指针实现的。

     

    18、@class  某些情况可代替#import ,减少编译次数,e.g.在复合类中的头文件中使用。。。

     

    19、一些有用的数据类型(struct):NSRange、NSPoint、NSSize、NSRect…..

     

    20、NSString类的方法

      创建字符串  +(id) stringWithFormat : (NSString *) format,……;

      e.g.   NSString *height;

    height = [ NSString stringWithFormat: @”height is %d feet, %d inchs”,5 , 11];

      如果在声明方法时添加了加号,表示这个方法定义为类方法(工厂方法)。这个方法属于类对象(而不是类的实例对象)并且通常用于创建新的实例。

      大小 -(unsigned int) length;

      e.g.   unsigned int length = [height length];

      比较 – (BOOL) isEqulToString: (NSString *) aSting; 还有compare方法

      检查字符串内是否还包含别的字符串:hasPrefix  hasSuffix

     

    NSSting为不可改变的字符串类型,其子类NSMutableString为可修给的字符串类型。

    NSMutableString类的方法:

      创建  stringWithCapacity,当然stringWithFormat也可以

      添加字符: appendString 、 appendFormat

      删减字符: deleteCharactersInRange与rangeOfString集合使用

    21、NSArray类:

      创建 arrayWithObjects方法

      e.g.   NSArray *array;

    array = [NSArray arrayWithObjecrs: @”one”, @”two”, @”three” , nil];(nil空,表列表结束)

    [array count]可获得数组个数

    [array objectAtIndex:i]  可得到数组的内容(索引遍历)

    切分数组componentsSeparatedByString

    合并数组componentsJoinedByStrring

    可变数组NSMutableArray类:addObject,removedObjectAtIndex

    22、枚举器NSEnumerator

    NSEnumerator *enumerator;

    Enumerator = [array objectEnumerator];//向数组请求枚举器

    id thingie;

    while(thingie = [enumerator nextObject]){

     NSLog(@”I found %@”, thingie);

    }

    23、快速枚举:

      for(NSSting *string in array){

          NSLog(@”I found %@”, string);

    }

    24、NSDictionary字典  散列表  关联数组:在给定的key(通常是NSString)下存储一个value(可以使任何类型的对象)

    Of course, 也有NSMutableDictionary

    25、NSNumber:Cocoa用来包装基本数据类型的类。

        NSValue可以包装任意值

  • 相关阅读:
    函数指针
    系统学习爬虫_2_urllib
    系统学习爬虫_1_爬虫基本原理讲解
    机器学习_集成算法与随机森林_案例实战:泰坦尼克获救预测
    机器学习_决策树及实战
    数据库_8_SQL基本操作——数据操作
    数据库_7_SQL基本操作——表操作
    数据库_6_SQL基本操作——库操作
    数据库_5_MySQL数据库介绍
    数据库_4_SQL介绍
  • 原文地址:https://www.cnblogs.com/mybkn/p/2367571.html
Copyright © 2011-2022 走看看