ISO 学习笔记 2015-03-15

Objective--C 

一 关键字
@property 定义变量函数
@synthesize  实现变量函数

二 函数
alloc 分配内存
init 初始化
new 替代上面两个函数 分配内存,并且初始化

三 规则 

0 变量的修饰符
@public @protected @private  @package
@public    实例变量可以被在任何地方访问。
@protected 实例变量能被声明它的类和子类访问,所有没有显式制定范围的实例变量都是@protected的。
@private 实例变量只能被声明它的类访问。
@package 使用runtime modern,一个@package实例变量在实现这个类的可执行文件镜像中实际上是@public的,但是在外面就是@private(runtime请参考苹果文档Runtime Programming Guide)。
         这个类型最常用于框架类的实例变量,使用@private太限制,使用@protected或者@public又太开放。

1  类的实例成员变量(非静态变量)
赋值/取值 通常可以有三种方式,需要注意的是给字符串赋值时需要在字符串前加前缀 @ ;还有就是这些变量的访问只能在非静态函数转中访问;
A 对象.成员变量 @protected @public @private
B 对象->成员变量  @public
C [对象 成员变量set函数]  @public @protected @private  

2 类的静态变量
A Objective-C自身时不支持静态变量的,但是由于Objective-C是C语言的超类,所以可以使用C语言的static关键字来创建全局变量,全局变量跟Java里的static变量是一样的,只有在类第一次加载的时候才初始化,知道程序被销毁才被释放掉
B 静态变量的调用都必须在静态方法中,无论是赋值还是取值
C static静态变量还可以在方法内定义,只不过在方法内定义的static静态变量只能在方法内调用,方法外无法调用。

3 动态函数
A 标识符 -
B 调用方式 [实例化对象 函数]
C 实例方法在堆栈上

4 静态函数
A 标识符 +
B 调用方式 [类 函数]
C 静态方法在堆上分配内存 

5 静态方法与实例方法区分
A 静态方法常驻内存,实例方法不是,所以静态方法效率高但占内存。事实上,方法都是一样的,在加载时机和占用内存上,静态方法和实例方法是一样的,在类型第一次被使用时加载。调用的速度基本上没有差别
B 静态方法在堆上分配内存,实例方法在堆栈上。事实上所有的方法都不可能在堆或者堆栈上分配内存,方法作为代码是被加载到特殊的代码内存区域,这个内存区域是不可写的
C 实例方法需要先创建实例才可以调用,比较麻烦,静态方法不用,比较简单。
D 静态方法是静态绑定到子类,不是被继承。
E 一般使用频繁的方法用静态方法,用的少的方法用动态的。静态的速度快,占内存。动态的速度相对慢些,但调用完后,立即释放类,可以节省内存,可以根据自己的需要选择是用动态方法还是静态方法。
F 静态方法修改的是类的状态,而对象修改的是各个对象的状态,这点也是它们重要的区别
G 类的实例化调用是在类的生命周期中存在,当类没有了以后,对应的实例也就没有了,对应的方法也就没有了,静态类不然,只要你引用了那个静态类的命名空间,他就会一直存在,知道你退出系统。

6  alloc\init 与 new
A 在实际开发中很少会用到new,一般创建对象咱们看到的全是[[className alloc] init]
B 区别只在于alloc分配内存的时候使用了zone 它是给对象分配内存的时候,把关联的对象分配到一个相邻的内存区域内,以便于调用时消耗很少的代价,提升了程序处理速度;
C 而为什么不推荐使用new?如果使用new的话,初始化方法被固定死只能调用init. 而你想调用initXXX怎么办?没门儿
D 采用new的方式只能采用默认的init方法完成初始化,采用alloc的方式可以用其他定制的初始化方法。 

7 @property @synthesize
A 作用 简化属性变量的SET,GET
B 简单语法语法
	B1 @property 数据类型 变量名; 在.h 文件中;
	B2 @synthesize 变量名;
C 复杂语法
时间: 2024-10-04 23:02:18

ISO 学习笔记 2015-03-15的相关文章

opencv学习笔记(03)——遍历图像(迭代器法)

1 #include <opencv2\highgui\highgui.hpp> 2 #include <opencv2\imgproc\imgproc.hpp> 3 #include <opencv2\core\core.hpp> 4 5 void colorReduce(cv::Mat& img, int div=64); 6 7 8 int main() 9 { 10 cv::Mat img_orginal = cv::imread("F:\\i

Duilib学习笔记《03》— 控件使用

在前面已经对duilib有个一个基本的了解,并且创建了简单的空白窗体.这仅仅只是一个开始,如何去创建一个绚丽多彩的界面呢?这就需要一些控件元素(按钮.文本框.列表框等等)来完善. 一. Duilib控件简介 在之前空白窗体的基础上,在界面上添加了一些控件,让大家先对这些控件效果有个基本的认识.如下图所示: 基本控件 高级控件 一些控件的基本显示效果就如同上面两幅图所示.实际上,在Duilib学习笔记<01>—duilib整体框架认识中我们就已经提到过Duilib这个库的组成,其中就提到了控件这

Linux 学习笔记 2016.03.11

第一个简单命令: ls,就是查看当前工作路径下的文件都有哪些啦,常用的也就几个参数 1.ls -a 表示以字母表的顺序列出当前目录下面的文件. 2.ls -l 表示列出各个文件的详细信息,至于是什么详细信息,可以看下面的啦 ls -l(这个参数是字母L的小写,不是数字1) 这个命令可以使用长格式显示文件内容,如果需要察看更详细的文件资料,就要用到ls -l这个指令.例如我在某个目录下键入ls -l可能会显示如下信息(最上面两行是我自己加的): 位置 1 2 3 4 5 6 7 文件属性 文件数

javaEE学习笔记【03】XML操作

XML简介 XML即可扩展的标记语言.因此该语言中所有的标签都是没有预先定义的,开发者可以自己随意的指定. 目前为止所有的标记的语言都属于开源的语言.由W3C组织进行一个基本的维护. 因此大家学习这些语言的时候应该参考W3C公布的文档. XML作用 1.可以用作软件的配置文件. 2.可以实现独立平台的数据传输. C. XML .Java  .天气预报 3.Web Service. 4.可以描述带关系的数据. XML声明指令 语法: 1 <?xml version=""  enco

HTML第一天学习笔记2015 10 01

如需在 HTML5 中显示视频,您所有需要的是: <video src="movie.ogg" controls="controls"> </video> <html> 与 </html> 之间的文本描述网页 <body> 与 </body> 之间的文本是可见的页面内容 <h1> 与 </h1> 之间的文本被显示为标题 <p> 与 </p> 之间的

《Effective C++ 》学习笔记——条款03

***************************************转载请注明出处:http://blog.csdn.net/lttree******************************************** 一. Accustoming Yourself to C++ Rule 03: Use const whenever possible. 条款03:尽可能的使用const const就是常量,它允许你指定一个语义约束,编译器会强制实施这项约束. 多才多艺的关键字

《白帽子讲WEB安全》学习笔记之第15章 web server配置安全

第15章 web server配置安全 15.1 apache安全 在linux部署安装web Server时候一定主要要使用"最小权限原则".尽量不要使用root部署. 15.2 nginx安全 Nginx 安全配置指南技术手册 PDF 下载 免费下载地址在http://linux.linuxidc.com/ 用户名与密码都是www.linuxidc.com 具体下载目录在 /pub/服务器相关教程/Nginx/Nginx 安全配置指南技术手册/ 参考资料:http://my.osc

Linux学习笔记2016.03.13

呜呜,今天10点半从实验室回来后和女朋友吵了很大一架,都快要分手了感觉,但是学习也不能中断,因为只有无论什么都坚持下去才会把好习惯养成,我知道如果将来我和我女朋友在一起过日子,我也必须多些技能去挣钱养活她嘛! 不过好烦啊,看不进去啊,今天就看了两个命令,关于文件操作的,就总结下来吧. 1.创建文件命令 touch  创建一个没有属性的普通文件,直接在touch 后面添加文件名字就行了 如 touch  a  就床建了一个空文件a 2.创建一个有内容的文件,一般也可一通过创建新文件,然后通过VIM

Linux学习笔记 2016.03.12

我又来啦,不是宝宝懒,而是今天一整天都在实验室和师哥调板子,十点40多才回到宿舍,今天也就只能学习两条新命令了,不过这也算坚持了嘛,等板子调通了应该就会多一些时间学习了吧. 今天学了两条和目录操作相关的命令,Linux的目录就是相当于Windows中的文件夹啦,还应该注意的是linux中一般命令是部分文件和目录的,统称为文件,只有特殊的命令才固定操作目录或者文件,所以像一般的文件操作命令都是能直接适用各种文件的. 1.创建目录:mkdir [选项] 目录名字,支持的参数: mkdir -l  目

斯坦福CS231n—深度学习与计算机视觉----学习笔记 课时14&amp;&amp;15

课时14 卷积神经网络详解(上) CNN处理的是一些数据块,在这之间有很多层,一系列的层将输入数据变换为输出数据,所以完成操作的中间量不仅是NN时候讲的那些向量,而是立体结构,有宽,高和深度,在整个计算过程中要保持这些三维特征.这里的深度指的是一个数据体的第三个维度. 工作流程 我们得到一些数据,作为网络的输入,在CNN中我们有这样的滤波器,假设现在我们只有一个滤波器,这些滤波器空间维度很小,我们用这个滤波器来和输入图像做卷积运算.这里的卷积运算,意思是说滤波器要在这个图像的空域范围内全部位置滑