《从零开始自学iOS》_02

先mark几个关键词吧

@Class 类名   ;

  1. 性能优化
  2. 防止循环拷贝
  3. 使用@Class来告知类代替#import<>  ,在.m实现文件中还是使用#import

release    autorelease    autoreleasepool

MRC   manul reference counting

  1. retain  assign   
  2. MRC机制下,A调用B, 要将Bretain ;A不用B了 ,还要将B release一次

ARC    automatic reference counting

  1. strong   weak
  2. A拥有B时 , 用strong修饰B即可;相当于MRC机制下用retain修饰的对象
  3. assign一般用于保存基本数据类型

category分类

  • @interface 类别 (扩展名称)
  • //method;
  • @end
  • ~~~~~~~~~~~~~~~~
  • @implementation
  • //method
  • @end
  1. 只能扩展方法,不能扩展属性
  2. 在category中可以访问对应类的.h文件中声明的属性
  3. 分类中的方法会重写覆盖原有类的方法
  4. 优先访问原则 : category分类 > 本类 > 父类

匿名分类/类扩展 (class Extension)

  1. 用于扩充私有属性和私有方法

只在@implementation中声明的属性是私有属性

只在@implementation中实现,却没有声明的方法为私有方法

NSString类

  • NSString *str = @“xxxooo”;
  • unichar c = 【str charaterAtIndex:1】; 将str中的第1个字符取出来赋值给字符c
  • 结构体中 length
  • int a = str.length      返回str的长度给a

block块

  1. block为数据类型
  2. 先重命名block再使用  : typedef int (^calBlock)(int ,int);       calBlock sumBlock = ^(){  }; calBlock就是重新命名后的块名。
  3. 一般是前面和后面的代码重复了,会使用block作为参数传入函数来使用
  4. block里的变量若是与外部的变量同名,block会在堆内复制一个同名变量来使用
  5. 一般出现同名变量的时候可以在外部的变量前面用__block修饰  ;  这样修饰后的变量就是地址传递 。




你可能感兴趣的:(《从零开始自学iOS》_02)