iphone应用开发学习笔记---Object-C基础

为什么80%的码农都做不了架构师?>>>   hot3.png

周末临时买来Mac mini, 配上蓝牙鼠标,键盘(非apple, apple贵啊),+个DVI线(apple配的HDMI to DVI竟然无法直接连接到显示器,还需要一条对接线)。

配置好系统走了一遍,三字:不习惯,四字:很不习惯

但有一点值得称赞的是,这么走了下感觉到了苹果以用户优先的思想,如果我更早接触它,我想会喜欢它,可惜现在习惯吃大米了。

其他也不想动,软件动不动是money,伤不起,直接下了个xcode4.4.1准备开始尝尝IOS上的开发。还是那个helloword,跑起来了,可惜不知道怎么跑的,代码基本不懂,郁闷原来自己和object-c还没见过面呢。

赶紧到baidu上找了个object-c,两个小时下来也有点头晕了。

总体感觉是:别扭

Object-c作为C 的衍生,是有C的很多内容,又包含java思想,因此有C和java经验的人员会容易很多(自己正好有多年C经验,虽不精通但够用,开发过两个java软件,虽还不够用但对其语法、思想还是有所领悟)。

废话不说直接贴上学习笔记,如果笔记中有错误地方还请前辈们指点(以下可以说是基础中的基础了):

文件类型
   .h   头文件
   .m   源文件

注释(与C相同)
   //
   /**/

nil  同 NULL


BOOL型
   只有YES/NO   其定义同java中的true/false    1为YES  非1为NO

包含头文件
   #import <>
   #import ""
   类似C中的#include但比#include功能多点,因为还包含C中的#ifndef #define #endif 自动防止同一个文件被多次导入

打印(C中的printf)
   NSLog(@"data= %i",data); //会自动加'\n'
   NS表示库函数,Nent Step缩写,被称为是苹果开发人员的自恋表现

类定义(头文件中定义)
  @interface MyClassName:ParentClassName   //类名以大写字母开头  所有类继承于NSObject
  {//类成员变量
      int data1;//默认protected成员变量
      @public int data2;//公有成员变量
      @private int data3;//私有成员变量
  }
  @private int data4;
  -(void) function; //不带输入参数的方法申明
  -(void) function2:(int)in1;//带参数的方法
  -(void) function3:(int)in1 function31:(int)in2 function32:(int)in3);//带多个参数,每个参数前有一个类似方法名的字符,可理解为一个参数对应一个方法
                    //'-'表示该方法是实例方法,对类的特定实例执行一些操作
                    //所有的方法都是@public ,所有类变量都是@private  (类变量 != 类成员变量)
  @end

类的实例化
  @implementation MyClassName
  -(void)function//方法实现
  {
  }
  -(void)function2:(int)in1
  {
     data1=in1;
  }
  -(void)function3:(int)in1 function31:(int)in2 function32:(int)in3)
  {
    data1 = in1;
    data2 = in2+in3;
  }
  @end
(从C和java的角度来看类的定义可认为是类的申明,类的实例化定义为类的定义,以下为类的实例化)

获取对象实例
  MyClassName *myClass = [[MyClassName alloc] init]; //将alloc消息发送给MyClassName请求创建一个新实例,然后向新创建的实例对象发送init消息类初始化该对象
  MyClassName *myClass = [MyClassName new]; //通常采用上一种方法
  所有对象变量都是指针类型,Id类型已经被预定义为指针类型,不需要加'*'
  方法返回以及输入参数如果没有指定类型均默认为Id类型

对象调用方法
  [MyClass function2:1];

释放对象
  [myClass release]; //类似C中的free


子类定义
@interface MyClassName2:MyClassName
  -(void) function21:(int)in21;
  -(int) function22;
@end

子类实例化
@implementation MyClassName2:MyClassName
- (void)function21:(int)in21
{
    [self function1:in21]  //self指名对象是当前方法的接收者
}
- (int) function22
{
   return data1;
}
@end

预处理 和C一样
   #define

##运算
    把两个标记连在一起

数组、函数、指针、结构、联合的用法和C一样

循环、条件、条件运算、goto、空域据、逗号表达式、sizeof运算、命令行参数、位操作和C一样

静态变量  和C一样

枚举、typedef以及数据类型的转换和C一样

数据类型
  int  %o(%#o)八进制   %x(%#x)十六进制  %X 显示大写十六进制
  float  %f
  char  %c
  double  %Lg  %Lf
  unsigned int  %u
  id   %p

字符串
   NSPoint  几何图形点坐标
   NSSize   几何图形长度和宽度
   NSRect   矩形数据类型
   NSString *str

字符串比较
   -(BOOL) isEqualToString:(NSString *)aString;
   -(NSComparisonesult)compare:(NSString *)string;//不区分大小写

不可变数组
   NSArray *str = @"data1:data2:data3";

可变数组
  NSMutableArray *array = [NSMutableArray arrayWithCapacity:17];

 

 

转载于:https://my.oschina.net/3wcar/blog/103369

你可能感兴趣的:(iphone应用开发学习笔记---Object-C基础)