OC-学习Tips

(Objective-C)

  13,多参数方法:(函数名:f::)

  参数能够在 : 前面设置一个标签label,标签label也是函数名的一部分,方便阅读(不带标签实际上也有个匿名标签),第一个参数不能有标签,实际上函数名就是第一个参数的标签。

  14,OC不是严格的函数重载(和C++不同),主要看标签中,函数名和参数数量是否相同,不是看参数类型,如:

  - (int)g:(int)x;

  - (int)g:(flota)x;  //错误,方法冲突了

  - (int)g:(int)x:(int)y;  //正确,两个匿名标签

  - (int)g:(int)x andY:(int)y;  //正确,第二个标签为andY

  15,Message 消息机制(函数-消息-方法)

  发送消息:[obj message] 或 obj.message

  OC在.h文件中定义的所有函数都是public的,OC通过categories来实现函数私有化(或不在头文件中声明而去.m文件中直接实现)

  16,凡是以initXXXX开头的都是构造函数,如:

  - (id)init;

  - (Dog *)initWith;

  17,NSLog 和 printf 都会在console中输出显示结果,不同的是,前者传递进去的格式化字符是NSString的对象,而不是char * 这种字符串指针。

  18,OC中的类由接口和实现两部分组成:接口部分声明类中的实力变量和功能,接口部分实现接口中的功能。

  19,OC中,类的对象无法声明在栈中,只能声明在堆里。

  20,alloc / new ,一个对象在堆中开辟了空间,栈中有一个对象地址,先有类还是先有对象,看站的角度。

  21,类的封装,封装成员变量,成员方法,subclass基类

  22,构造方法:(类的封装)

  (1)在一般语言中,在创建对象时自动调用的方法称为构造方法。

  (2)在OC中,方式用init开头的成员方法都是构造方法。

  构造方法一般用于对象的初始化, 无参的构造方法返回值是当前对象的地址。

  23,构造函数和析构函数

  构造函数一般以initWithXXXX开头-初始化。

  析构函数dealloc:对象从内存中销毁前调用的函数。

  构造方法:

  - (id)init {

    if (self = [super init]) {

      //_FUNCTION_当前函数本身

    }

    return self;

  }

  - (void)dealloc {

    NSLog(@"name:%@ release",_name);

    [super dealloc];

  } //在对象完全消失的时候调用,对象销毁时,对象计数器=0。

   //不要人为的调用[xxx dealloc],应该用release销毁[xxx release],release使对象计数器-1,减到0,就会自动调用dealloc函数

  - (void)initialize; //类第一次实例化时调用,只调用一次

  24,self指针(super)(Java中的this、super):指向当前对象的指针,"+"类方法直接用类名调用(静态方法)

  25,类方法不能访问成员变量,类方法不能调用对象的方法。

  26,静态变量(全局、局部)

  未初始化前默认为0,作用域为当前文件,在全局数据区分配。

  静态函数:不能被其他文件所用,其他文件可以定义相同的函数名而不冲突。

  27,点语法  是编译器级别:

  dog.age = 200;  <=>  [dog setAge:200];

  int dogAge = dog.age;  -<=>  int dogAge = [dog age]; //具体调用了哪个方法编译器会自动判断

  28,@property int age  <=>  - (void)setAge:(int)newAge;- (int)age;   // .h文件中的声明

     @synthesize  <=>  - (void)setAge:(int)newAge{}  - (int)age{}   //.m文件中的实现

  29,age 与 self.age :在Dog类内部可以直接访问age变量,前者直接访问相当于访问age字段,后者是调用setter和getter函数。

  30,@property 参数(属性):readwrite(getter/setter,缺省),readonly(getter);

  assign(缺省),retain,copy -->表示属性如何存值;

  nonatomic -->表示考虑线程安全问题;

  getter=...;setter=...;,重置getter函数和setter函数。

  31,Category

  *** 实现继承之外的扩展方法的机制,只能扩展函数、消息,不能扩展字段、变量等。

  Category命名规范:要扩展类名+,扩展变量.[hm]

  比如:NSString+ReverseString.h    NSString+ReverseString.m

  -----

时间: 2024-08-04 21:11:36

OC-学习Tips的相关文章

OC学习篇之---总结和学习目录

今天终于把OC的基础知识学习完了,但是这些知识只是最基础的,还有很多高级知识,这个可能需要后面慢慢的去学习才能体会到.下面就是这次学习OC的目录教程,如果大家发现有什么不正确的地方,请指正,小弟是新生,多请OC老鸟来喷~~ 1.OC学习篇之---概述 2.OC学习篇之---第一个程序HelloWorld 3.OC学习篇之---类的定义 4.OC学习篇之---类的初始化方法和点语法的使用 5.OC学习篇之---类的三大特性(封装,继承,多态) 6.OC学习篇之[email protected]关键

IOS开发-OC学习-常用功能代码片段整理

IOS开发-OC学习-常用功能代码片段整理 IOS开发中会频繁用到一些代码段,用来实现一些固定的功能.比如在文本框中输入完后要让键盘收回,这个需要用一个简单的让文本框失去第一响应者的身份来完成.或者是在做与URL有关的功能时,需要在Info.plist中添加一段代码进而实现让网址完成从Http到Https的转换,以及其他的一些功能. 在从一个新手到逐渐学会各种功能.代码.控件.方法如何使用的过程中,也在逐渐积累一些知识,但是一次总不会把这些东西都深刻记住并完全理解.所以在这儿记录下这些东西,用来

OC学习篇之---单例模式

在之前的一片文章中介绍了对象的拷贝相关知识:http://blog.csdn.net/jiangwei0910410003/article/details/41926531,今天我们来看一下OC中的单例模式,单例模式在设计模式中用的可能是最多的一种了,而且也是最简单的一种 实现单例模式有三个条件 1.类的构造方法是私有的 2.类提供一个类方法用于产生对象 3.类中有一个私有的自己对象 针对于这三个条件,OC中都是可以做到的 1.类的构造方法是私有的 我们只需要重写allocWithZone方法,

黑马程序员-OC学习笔记之Foundation框架NSNumber、NSValue和NSDate

---------------------- IOS开发.Android培训.期待与您交流! ---------------------- 一.NSNumber 前几篇笔记中,小桥复习了Foundatio框架中的几个类,这三个是OC学习的尾声了. 小桥已经复习过OC数组类NSArray,也说过它只能存放OC的对象,对于基本的数据类型确无能为力,但是实际编程中经常要把基本的数据如int.float,结构体存放的OC数组中,怎么办?这里的NSNumber就有用了,它能够把基本数据类型包装成OC对象.

黑马程序员-OC学习笔记之block

过山车 Time Limit: 1000/1000 MS (Java/Others)    Memory Limit: 32768/32768 K (Java/Others) Total Submission(s): 9426    Accepted Submission(s): 4151 Problem Description RPG girls今天和大家一起去游乐场玩,终于可以坐上梦寐以求的过山车了.可是,过山车的每一排只有两个座位,而且还有条不成文的规矩,就是每个女生必须找个个男生做par

(转载)OC学习篇之[email&#160;protected]关键字的作用以及#include和#import的区别

前一篇文章说到了OC中类的三大特性,今天我们来看一下在学习OC的过程中遇到的一些问题,该如何去解决,首先来看一下我们之前遗留的一个问题: 一.#import和#include的区别 当我们在代码中使用两次#include的时候会报错:因为#include相当于拷贝头文件中的声明内容,所以会报重复定义的错误 但是使用两次#import的话,不会报错,所以他可以解决重复导入的问题,他会做一次判断,如果已经导入一次就不导入了 二.关键字@class的作用 在来看一下OC中的关键字@class的作用,在

黑马程序员-OC学习笔记之ARC

---------------------- IOS开发.Android培训.期待与您交流! ----------------------一.什么是ARC        ARC是自动引用计数,苹果官方在Xcode4.2及以后版本中加入的一个内存管理机制,完全取代了程序员人工的内存管理,使得程序员只须关心程序本身.使用ARC,编译器会自动在代码中加入内存管理代码,是一个编译器特性,而不是运行时特性,当然,它也和JAVA的垃圾回收不同,它的本质和手动的内存管理是一样的,只是这些代码编译器会自动添加.

OC学习总结之面向对象和类

OC学习总结之面向对象和类 Objective-c是c语言的母集合,它的原意就是在原始的c语言的主体上加入面向对象的特性.1.面向对象和面向过程  面向对象和面向过程是编程的两种思考方式.面向对象,简称OOP,它是以事物为中心,参与事件的事物是核心,完成事件只是事物的一个小任务.面向过程,简称OPP,它是以事件为中心,事件是核心,列出了完成事件的每一个步骤,一步一步完成.也就是面向对象侧重于从问题在寻找客体.客体的作用.客体间的关系即“谁”.“做什么”.“怎么做”,面向过程侧重于问题的分解即“事

黑马程序员-OC学习笔记之NSString与NSMutableString

---------------------- IOS开发.Android培训.期待与您交流! ---------------------- 一.NSString与NSMutableString 相信大家对NSString类都不陌生,它是OC中提供的字符串类,它的对象中的字符串都是不可变的,而它的子类NSMutableString类的对象中的字符串就是可变的.什么是可变与不可变呢?二者的区别就是在已经创建的一个字符串对象中,在程序中能不能更改字符串,比如拼接新的字符串,可变的可以在原字符串中更改,

OC学习16——对象归档

转载自  OC学习篇之---归档和解挡 OC中的归档就是将对象写入到一个文件中,Java中的ObjectInputStream和ObjectOutputStream来进行操作的.当然在操作的这些对象都是需要实现一个接口:Serializable,同样的OC中操作的对象也是需要实现一个协议的,后面会说到. 一.已有类型的归档和解档 首先来看一个简单的例子: 1 // 2 // main.m 3 // 33_ObjectToFile 4 // 5 // Created by jiangwei on