一.点语法 (一)认识点语法 声明一个Person类: 1 #import <Foundation/Foundation.h> 2 3 @interface Person : NSObject 4 { 5 int _age; 6 NSString *_name; 7 } 8 9 - (void)setAge:(int)age; 10 - (int)age; 11 12 - (void)setName:(NSString *)name; 13 - (NSString *)name; 14 15…
点语法 点语法本质是函数的调用,不是像java中那样,是用来访问成员变量的:oc中访问成员变量是用 -> 访问的: Person *p = [Person new]; p.age = 10; // 如果点语法是进行了赋值操作,那么就相当于调用了setter方法: [p.age]; // 这样不赋值相当于调用了getter: 注意点: 尽量不要在setter或getter中调用点语法,容易引发死循环:死循环是由于递归调用引发的: // 在setter调用点语法 - (void)setAge:(in…
一.OC简介 在C语言的基础上,增加了一层最小的面向对象语法:完全兼容C语言:可以在OC代码中混入C语言代码,甚至是C++代码:可以使用OC开发Mac OS X平台和iOS平台的应用程序. 二.OC语法预览 (一)关键字 基本上所有的关键字都是以@开头的,如@interface  @implementation  @public等,少部分没有以@开头,如id,_cmd等 (二)字符串以@开头 C语言字符串:“hello” OC语言字符串:@“hello” (三)其他语法 基本类型:5种,增加了布…
点语法 1.利用点语法替换set方法和get方法 方法调用 Student *stu = [Student new]; [stu setAge : 18]; int age = [stu age]; 点语法 stu.age = 18; int age = stu.age; 2.点语法的本质 其实点语法的本质还是方法调用 当使用点语法的时候 编译器会自动展开成相应的方法 3.死循环注意 - (void) setAge : (int) age { self.age = age;//会引起死循环 }…
一.基本原理 (一)为什么要进行内存管理. 由于移动设备的内存极其有限,所以每个APP所占的内存也是有限制的,当app所占用的内存较多时,系统就会发出内存警告,这时需要回收一些不需要再继续使用的内存空间,比如回收一些不再使用的对象和变量等. 管理范围:任何继承NSObject的对象,对其他的基本数据类型无效. 本质原因是因为对象和其他数据类型在系统中的存储空间不一样,其它局部变量主要存放于栈中,而对象存储于堆中,当代码块结束时这个代码块中涉及的所有局部变量会被回收,指向对象的指针也被回收,此时对…
成员变量的作用域 OC中成员变量有四种作用域,同时每一种作用域对应着响应的关键字. * @private:自能在当前类的实现@implementation中访问 * @protected: 可以在当前类以及子类的实现@implementation中直接访问 默认 * @public: 任何地方都可以直接访问 * @package: 同一个"体系结构"框架可以访问.介于@private和@public之间 在@implementation实现中声明的成员变量默认是私有的. #import…
A. 命令行编译和XCode编译 1.在存在多个.m源码实现文件的情况下,若根据需要引入.m文件,使用命令行仅仅编译主.m文件即可,但是XCode会同时编译全部.m文件,会发生编译错误(重复定义全局变量或函数) 解决方案: 使用.h和.m文件,分开声明和定义     B.XCode功能 1.自动生成.h和.m 2.保存.引用快捷代码块 3.方法索引注释 #pragma mark 方法的说明 #pragma mark - 方法的说明 加入分组线 4.链接错误查看,使用左上角的感叹号logo   C…
一.block   (一)简介 block 是什么?苹果推荐的类型,效率高,在运行中保存代码.用来封装和保存代码,有点像函数,block 可以在任何时候执行.在多线程.异步任务.集合遍历.集合排序.动画转场用的很多. block 和函数的相似性:(1)可以保存代码(2)有返回值(3)有形参(4)调用方式一样. 标识符 ^ (二)基本使用 (1)定义block 变量 // 有参数,返回值类型为int int (^MySum)(int, int) = ^(int a, int b) { return…
一.构造方法 (一)构造方法的调用 创建一个可用的对象:Person *p=[Person new]; new方法实际上是分为两步来创建一个对象: 1)使用+alloc方法来分配存储空间(返回分配的对象): 2)使用-init方法来对对象进行初始化. 可以把new方法拆开如下: 1.调用类方法+alloc分配存储空间,返回未经初始化的对象 Person *p1=[person  alloc]; 2.调用对象方法-init进行初始化,返回对象本身 Person *p2=[p1 init]; 3.以…
一.基本用法 1.设计两个类Bird.Dog 1 // Bird的声明 2 @interface Bird : NSObject 3 { 4 @public 5 int weight; 6 } 7 - (void)eat; 8 @end 9 // Bird的定义 10 @implementation Bird 11 - (void)eat { 12 NSLog(@"吃吃吃-体重:%d", weight); 13 } 14 @end 15 // Dog的声明 16 @interface…