疯狂的ios

433 阅读4分钟

疯狂ios (李刚)

NSLOG函数是NS的前缀,Cocoa对其所有的函数、常量、类型前面都会增加NS;

    @"string";NSString;
    "string"; C语的字符串;
    OC 加上 @ 用于区别 C语言
  

预处理两个特征

  1. 以 # 开头
  2. 必须位于程序的开头

项目结构

项目目录中: products 放编译后的文件

书籍地址 http://reader.epubee.com/books/mobile/00/00e7afd86ad220d348af388ca9688938/text00007.html

第二章 oc基础语法

2.2.6 限定词

在Objective-C程序中,常用的限定词有long、long long、short、unsigned和signed,下面将对其进行详细讲解

  1. long
  2. long long
  3. short
  4. unsigned 在Objective-C程序中,unsigned是一种最终限定符,当整数变量只用来存储正数时可以使用最终限定符。例如通过下面的代码向编译器声明,变量counter 只用于保存正值。使用限制符的整型变量可以专门存储正整数,也可以扩展整型变量的精度。

在Objective-C程序中,当将变量声明为long int、short int或unsigned int类型时,可以省略关键字int,为此变量unsigned int counter和如下声明格式等价。

unsigned counter;
  1. signed 在Objective-C程序中,限定词signed能够明确地告诉编译器特定变量是有符号的。signed主要用在char声明之前

2.2.7 基本数据类型小结

2.4 字符串

在Objective-C程序中,字符串常量是由@和一对双引号括起的字符序列。比如,@"CHINA"、@"program"、@"$12.5" 等都是合法的字符串常量。它与C语言中字符串的区别是增加了“@”。 字符串常量和字符常量是不同的量,主要有如下两点区别。 (1)字符常量由单引号括起来,字符串常量由双引号括起来。 (2)字符常量只能是单个字符,字符串常量则可以含一个或多个字符。 在Objective-C 语言中,字符串不是作为字符的数组被实现的。在Objective-C中的字符串类型是NSString,它不是一个简单数据类型,而是一个对象类型,这是与C++语言不同的。我们会在后面的章节中详细介绍NSString。例如下面是一个简单使用NSString的例子。

NSLog(@"Programming is 牛!");

第3章 运算符和表达式

第6章 面向对象——类、对象和方法

6.3.1

在Objective-C中,类使用关键字@interface来定义。

6.4

使用@interface定义类

@interface 类名: 父类

/+ /- 在上述声明代码中,开头的“-”功能是通知Objective-C编译器该方法是一个实例方法。而与“-”对应的另外一种选择是“+”,表示类方法。

6.6 program具体实现部分

int main(int argc, const char * argv[]) {
@autoreleasepool {
      Fraction * myFraction;
      myFraction = [Fraction alloc];
      myFraction = [myFraction init];
      [myFraction setNumerator: 1];
      [myFraction setDenominator: 3];
      NSLog (@"The value of myFraction is:");
      [myFraction print];
    return 0;
}

Fraction myFraction; 定义一个名为myFraction的变量。 通过上述代码,表示myFraction是一个Fraction类型的对象,myFraction的功能是存储新的Fraction类的变量。myFraction前面的星号“”是必需的,“*”的功能是表示myFraction是对Fraction的一个引用(或者指针)。

oc语法

在 OC 语言中,绝大部分的关键字使用的 @ 符号开头。记住这是一个规则就好了。

import导入指令

“#”表示的是一个预处理指令。
这个指令的作用:将文件的内容在预编译的时候拷贝写指令的地方.
简单的原理:#import指令在包含文件的时候,底层会先判断这个文件是否被包含 如果被包含就会略过 否则才会包含.

  // .h  声明类
  @interface className : NSObject
  {
      int age;
      NSString *name;
      BOOL isBoy;
  }
  
  @end
  
  // .m 实现类
  @implementation className{
      
  }
  @end
  

注意事项

  1. 在 .m 文件中定义的变量为私有变量,在其他的类是不能调用到的。
  2. 在 .m 中定义的方法在 .h 文件中如果没有定义就不能被外部的类所调用。
  3. 如果在 .h 文件中声明了一个方法,但是在 .m 文件中没有实现这个类,可编译通过,不可以运行。

类生成对象的方式

类生成对象在 OC 有好几种常见的方式,这里只阐述两种比较常用的方式:

// one
Person *person = [Person new]   // java Person person = new Person()

// two
Person *person = [[Person alloc] init];
// 其中 alloc 表示分配内存空间, init 表示初始化成员变量。
// 这两种方式完全等价

// 属性调用
 person->name; 与java person.name 一样
 // 方法的调用
 
 [person eat]    // java person.eat() 
 
 // 有参数的方法
 -(返回值类型)方法名称:(参数类型)参数名称1 : (参数类型)参数名称2
方法名称和参数数值之间以 “:” 表示分隔。
 声明类定义
 -(void)eat:(NSString *)name; 
 
 实现类
 /*setName   withAge  withBoy  withIsBoy 这个整体就是一个方法名称,至于为
 *什么用 withXXX 这是 OC 书写的一种比较好的习惯吧。这些变量之间没有特殊的符号的定义,除了变量空格就好了。
 */
-(void)setName:(NSString *)name withAge:(int)age withIsBoy:(BOOL)isBoy{
    _name = name;
    _age = age;
    _isBoy = isBoy;
}

类方法

对象的方法用 “-” 表示。类方法用 “+” 表示。其他的方式全部和对象方法一致。

第7章 面向对象——继承