Objective-C学习笔记-第一天(1)

Objective-C学习笔记-第一天(1)

.h头文件,用于声明一些公开的属性、方法。头文件一般不会放太多的东西,没必要暴露太多接口,私有和封装。

.m主文件,用于实现.h文件中的方法,以及一些其它的方法。

-(返回值)方法名参数1名称:(参数1类型)  参数1函数内名称 参数2名称:(参数2类型) 参数2函数内名称......;

调用静态(类)方法:[类名 方法];

调用实例方法:[变量名 方法];

基本类型的声明,不需要*修饰;

#代表预编译处理符号

#include与#import:

#include 引入文件

#import 防止重复包含

Person.h

Objective-C学习笔记-第一天(1)

@interface声明部分开始

声明部分

@end声明部分结束

继承:类名:父类名

类别(扩展):父类名(类名)

  类别可以对已经存在的类的行为进行拓展。

Person.m

Objective-C学习笔记-第一天(1)

@implementation实现部分开始

实现部分

@end实现部分结束

main.m

Objective-C学习笔记-第一天(1)

alloc用于分配内存

init执行初始化操作

Objective-C中使用的是消息传递机制,调用方法、访问属性等一类操作也可叫做消息传递。

@关键词(属性修饰符) 类型 名字;

参考:http://blog.csdn.net/zhiganglet/article/details/7546333

关键词:

  property:自动声明属性读取方法以及设置方法如

  @property int personAge;

  编译器自动生成以下:

  -(int)personAge;

  -(void)setPersonAge:(int)newValue;

  synthesize:在主文件中实现属性读取遗迹设置方法如

  @synthesize personAge;

  编译器自动生成以下:

  -(int)personAge{

    return personAge;

  }

  -(void)setPersonAge:(int)newValue{

    personAge = newValue;

  }

属性修饰符:

  readwrite(默认)/readonly;

  assign/retain/copy;

  atomic(默认)/nonatomic;

  readwrite:产生setter和getter方法;

  readonly:只产生简单的getter,没有setter;

  assign:默认,setter方法直接赋值而不retain;

  retain:setter方法先release旧值,再retain新值;

  copy:setter方法进行copy,与retain一样;

  nonatomic:禁止多线程,保护变量,提高性能(

    如果使用多线程,有时会出现两个线程互相等待对方导致锁死的情况。

    在没有(nonatomic)的情况下,即默认(atomic),会防止这种线程互斥出现,但会消耗一定的资源。

    所以如果不是多线程的程序,打上(nonatomic)即可

  )

  

  属性值修饰后所有权

strong

__strong

weak

__weak

unsafe_unretained

__unsafe_unretained

copy

__strong

assign

__unsafe_unretained

retain

__strong

  strong(默认)

  该属性值对应 __strong 关键字,即该属性所声明的变量将成为对象的持有者。

  weak

  该属性对应 __weak 关键字,与 __weak 定义的变量一致,该属性所声明的变量将没有对象的所有权,并且当对象被破弃之后,对象将被自动赋值nil。

  并且,delegate 和 Outlet 应该用 weak 属性来声明。同时,如上一回介绍的 iOS 5 之前的版本是没有 __weak 关键字的,所以 weak 属性是不能使用的。这种情况我们使用 unsafe_unretained。

  unsafe_unretained

  等效于__unsafe_unretaind关键字声明的变量;像上面说明的,iOS 5之前的系统用该属性代替 weak 来使用。

  copy

  与 strong 的区别是声明变量是拷贝对象的持有者。

  assign

  一般Scalar Varible用该属性声明,比如,int, BOOL。

  retain

  该属性与 strong 一致;只是可读性更强一些。

  

当对象持有数为0时,系统将回收对象所占据的内存。

上一篇:PHP判断图片是否存在和jquery中load事件对图片的处理


下一篇:学习笔记-canny边缘检测