Objective--C 

一 关键字
@class 导入已有的类
id 对象类型 表示任何一个ObjC对象类型
Block 对象类型 OC中称为代码块 类似于C中的函数式指针
typedef 定义数据类型
@Category 分类,扩展 二 函数 三 规则
1 id
A id可以表示任何一个ObjC对象类型,类型后面的”<协议名>“用于约束作为这个属性的对象必须实现该协议(注意:使用id定义的对象类型不需要加“*”); 2 @class
A 在.h文件中如果使用了另一个文件的类或协议我们可以通过@class或者@protocol进行声明,而不必导入这个文件,这样可以提高编译效率 3 Block
A Block类型定义:返回值类型(^ 变量名)(参数列表)(注意Block也是一种类型);
B 感觉类似于匿名函数
C 变量名在类定义时可以不用带*
D Block的typedef定义:返回值类型(^类型名称)(参数列表);
E Block的实现:^(参数列表){操作主体};
F Block中可以读取块外面定义的变量但是不能修改,如果要修改那么这个变量必须声明_block修饰; 3 Category
A 扩展现有的类并且不需要改动原类
B 新建一个Objective-C 文件,选择类的类型为Category,还有要选择你要修改的类,注意看创建后的文件名,它是由原类名+新类名一起组成的,必须要会有那个加号符,
例如 NSString 扩展后的文件名为 NSString+Trim ,再看类的定义上需要改动,原来定义一个普通的类是 @interface 类名:NSObject,扩展后就是 @interface 类名(扩展名)
例如 @interface NSString(Trim)
C 适用范围
I 系统或框架中的类
II 类包含了很多个方法实现,而这些方法需要不同团队的成员来实现
III 类包含了很多个方法实现,而这些方法需要不同团队的成员来实现
D 需要注意的问题
I Category可以访问原始类的实例变量,但不能添加实例变量,如果想添加变量,那就通过继承创建子类来实现。
II Category可以重载原始类的方法,不大不推荐这么做,这样会覆盖掉原始类的方法。如果确实要重载,那就通过继承创建子类来实现。
III 和普通接口有所区别的是,在Category的实现文件中的实例方法只要你不去调用它你可以不用实现所有声明的所有方法。

IOS 学习日志 2015-3-17的更多相关文章

  1. Python学习日志9月17日 一周总结

    周一,9月11日 这天写的是过去一周的周总结,我从中找出当天的内容. 这天早晨给电脑折腾装机,早晨基本上没有学习,休息了一个早晨. 下午写的上周总结,完事做mooc爬虫课的作业,<Think P ...

  2. IOS 学习日志 2015-3-16

    Objective--C 一 关键字 self 相当于java中的this,但是又有不同 它即可一代替对象,也可以代替类, 也就是说它既可以用在静态方法中又可以用在动态方法中. super 相当于父类 ...

  3. IOS 学习日志 2015-3-13

    前面几天在看C ,但是没有做笔记,现在在看Objective--C ,开始做笔记,希望每一天都有成长吧 Objective--C 关键字 1 @import 导入 注意<>||" ...

  4. 2015最新iOS学习线路图

    iOS是由苹果公司开发的移动操作系统,以xcode为主要开发工具,具有简单易用的界面.令人惊叹的功能,以及超强的稳定性,已经成为iPhone.iPad 和iPod touch 的强大基础:iOS 内置 ...

  5. 黑苹果-IOS学习的开始

    深知安装黑苹果的不易,在这里写一下关于我的Thinkpad E430c安装黑苹果教程(Mac版本:Yosemite 10.10.4),希望能够帮助有需要的朋友. 首先贴上我的电脑配置报表: ----- ...

  6. iOS学习资料整理

    视频教程(英文) 视频 简介 Developing iOS 7 Apps for iPhone and iPad 斯坦福开放教程之一, 课程主要讲解了一些 iOS 开发工具和 API 以及 iOS S ...

  7. iOS 学习

    iOS 学习资料 (适合初学者) 本文资料来源于GitHub 一.视频教程(英文) Developing iOS 7 Apps for iPhone and iPad斯坦福开放教程之一, 课程主要讲解 ...

  8. iOS 学习资料汇总

    (适合初学者入门) 本文资料来源于GitHub 一.视频教程(英文) Developing iOS 7 Apps for iPhone and iPad斯坦福开放教程之一, 课程主要讲解了一些 iOS ...

  9. iOS学习笔记-精华整理

    iOS学习笔记总结整理 一.内存管理情况 1- autorelease,当用户的代码在持续运行时,自动释放池是不会被销毁的,这段时间内用户可以安全地使用自动释放的对象.当用户的代码运行告一段 落,开始 ...

随机推荐

  1. [二]Ajax基本实现

    <script text="text/javascript"> function ajax(){ var httpRequest; if(windows.httpReq ...

  2. ros和Android(一)

    ros和Android :first-child { margin-top: 0; } blockquote > :last-child { margin-bottom: 0; } img { ...

  3. 【转】C++的面象对象总结

    转自:http://www.cnblogs.com/icemoon1987/archive/2012/10/01/2709572.html 1. 面向对象:对象.类.继承   2. 构造函数: 类的数 ...

  4. ThinkPHP3.1新特性:Action参数绑定

    Action参数绑定功能提供了URL变量和操作方法的参数绑定支持,这一功能可以使得你的操作方法定义和参数获取更加清晰,也便于跨模块调用操作方法了.这一新特性对以往的操作方法使用没有任何影响,你也可以用 ...

  5. java 5 线程池

    import java.util.concurrent.ExecutorService; import java.util.concurrent.Executors; public class Thr ...

  6. 动作之CCActionInterval(持续动作)家族

    持续动作,顾名思义,就是该动作的执行将持续一段时间.因此持续动作的静态生成函数,往往附带一个时间值Duration. 持续动作类名后缀:一般有两种后缀,一种是To,一种是By.To表示最终达到的目标值 ...

  7. 瀑布流AJAX无刷新加载数据列表--当页面滚动到Id时再继续加载数据

    瀑布流加载显示数据,在当下已经用的很普遍,尤其是我们在做网上商城时,在产品列表页面已经被普遍使用. 对于实现瀑布流布局的解决方案主要有以下两种方式: 1.对每一条显示数据使用绝对定位+浮动的方式,这样 ...

  8. 功能测试中遇到的一些有意思的bug

    2016.1.25 1.  Xss攻击型的bug Xss攻击即跨站脚步攻击,通过插入恶意脚本 ,实现对用户浏览器的控制. Bug现象:新增物品时,物品名称输入一段JavaScript代码,在提交时此代 ...

  9. maven搭建个人仓库

    Maven环境搭建: 本地仓库+maven运行环境+构建项目 1.搭建nexus 本地仓库 1)拷贝jdk1.6和tomcat62)配置端口为8010 (端口自行定义,只要下面各处一致即可)3)复制n ...

  10. 在ModelSim波形图中以参数名显示变量

    在ModelSim波形图中以参数名显示变量 在使用Verilog HDL编写有限状态机等逻辑的时候,状态机的各个状态通常以参数表示,但当使用ModelSim仿真的时候,状态机变量在wave窗口中以二进 ...