随笔分类 - Objective-C
摘要:Block原理 Block自动截获局部变量 Block原理 主要代码摘要如下: 源码下载 Block自动截获局部变量 1、什么是自动截获局部变量:在执行block语法的时候,block语法表达式所使用的局部变量被保存到block的结构体实例中(没有使用的变量不会被追加)。 2、自动截获局部变量带来的
阅读全文
摘要:关于直接调用方法和给对象发送消息调用方法(即perfromSelector和NSInvocation) performSelector是运行时系统负责去找方法的,在编译时候不做任何校验;如果直接调用编译是会自动校验。如果imageDownloader:didFinishWithImage:image
阅读全文
摘要://4.运行过程 //1> 编写OC源文件:.m、.c //2> 编译:cc -c xxx.m xxx.c //3> 链接:cc xxx.o xxx.o -framework Foundation //(只有用到了Foundation框架才需要加上-framework Foundation) //4
阅读全文
摘要:import相对于include: 1)、同样可以拷贝文件内容 2)、可以防止文件的重复拷贝
阅读全文
摘要:// 对象作为函数的参数--类与对象的内存分析 //成员方法和函数的区别 #import @interface Car : NSObject{ @public int wheel; int speed; } -(void) run; @end @implementation Car -(void)run{ NSLog(@"%i轮子,时速%i的车子跑起...
阅读全文
摘要://[Person new]; 真正开发并不常用,这种创建对象的方式太死板了 //完整的创建一个可用的对象 //1、分配存储空间 +alloc 返回id类型,分配好存储空间的对象,没有初始化还不可用 //2、初始化 -init
阅读全文
摘要://id是一种类型,是一个关键字所以以后的标识符就不能起名叫做id //id是万能指针,能指向 操作任何oc对象 内部已经包含*,不要自己 //再写* //id d=[Person new]; //id= NSObject * //void test(id d); //@property id d;
阅读全文
摘要:// @property和@synthesize--编译器特性,自动生成get、set方法 //成员变量 //int _age; //get、set方法声明的快速实现 //@property int age 等价于 //- (void)setAge:(int)age; //- (void)age;
阅读全文
摘要:@public:(当然要先有对象)在任何地方都能直接访问对象的成员变量 @private:只能在当前类的方法中访问(虽然子类不可访问父类的private,但是子类 还是有这个成员变量) @package:只要处于同一个框架中,就能直接访问对象的成员变量 写框架才用,一般用不到 @protected:
阅读全文
摘要:// self关键字--在OC中没有@符号的关键字 //self就是一个指针,谁调用本方法这个指针就指向谁, //指向了方法的调用者,代表着当前的对象 //1、self调用成员变量 //self->age=age; 类似于java中的this.age=age; //2、self调用成员方法 //[s
阅读全文
摘要://多态:多种形态 对象有多种形态 //没有继承就没有多态,必须继承 #import <Foundation/Foundation.h> //多态:父类的指针指向子类对象 //调用一个对象方法会检测对象的真实形象 //注意: //Cat *c=[Animal new]; 这样都允许,OC是弱语法 /
阅读全文
摘要:继承代表两个类之间的关系 Dog:Animal 类似java中的 Dog extends Animal Dog *pDog=[Dog new];类似java中的 Dog dog=new Dog(); [pDog bark];类似java中的 dog.brak(); ARC机制,自动生成内存管理代码
阅读全文
摘要://要求设计一个股票软件 //提供一个设置最大值. 和一个最小值, 以及获取平局值的方法 #import #import "KLine.h" // 使用类先引入数据的头文件 int main(int argc, const char * argv[]) { KLine *pk = [KLine new]; [pk setMin:90]; [pk setM...
阅读全文
摘要:// 匿名对象 #import int main(int argc, const char * argv[]) { // com+ctrl+上 在.m和.h之间切换 // [Person new]; // 无论有没有名字,只要调用new方法就会返回对象的地址 // // [Person new]->name=@"cy"; // [Person new]...
阅读全文
摘要:// // main.m // 对象作为返回值:对象作为返回值,主要是掌握: //在成员方法中创建的对象,是局部变量,但是这个局部变量存储在堆当中,方法执行完后不会自动的释放 #import //士兵在兵工厂买枪和子弹,然后进行射击 //弹夹类 @interface Clip : NSObject { @public int _bullet; // 子弹数 } -...
阅读全文
摘要:// // main.m // 对象作为参数的连续传递 // 方法的形参,当调用该方法的时候,接收了值,才会给该方法中的形参分配存储空间, // 如果传进来了是对象的指针,就保存了对象的地址,也就是指向了那个对象 #import #pragma mark - 弹夹 //弹夹 //事物名称: 弹夹(Clip) //属性:子弹(Bullet) //行为:上子弹(addBul...
阅读全文
摘要:// 对象作为参数传递 //好好感受一下面向对象的思想,枪有射击的功能,士兵使用枪射击,就给士兵一个枪,然后调用枪的射击方法就可以了 #import #pragma mark - 枪 //枪 //事物名称:枪(Gun) //属性:弹夹(clip) , 型号(model) //行为:射击 @interface Gun : NSObject { @public int _...
阅读全文