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

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

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

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

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

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

#代表预编译处理符号

#include与#import:

#include 引入文件

#import 防止重复包含

Person.h

@interface声明部分开始

声明部分

@end声明部分结束

继承:类名:父类名

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

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

Person.m

@implementation实现部分开始

实现部分

@end实现部分结束

main.m

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时,系统将回收对象所占据的内存。

Objective-C学习笔记-第一天(1)的更多相关文章

  1. ActionBarSherlock学习笔记 第一篇——部署

    ActionBarSherlock学习笔记 第一篇--部署          ActionBarSherlock是JakeWharton编写的一个开源框架,使用这个框架,可以实现在所有的Android ...

  2. oracle学习笔记第一天

    oracle学习笔记第一天 --oracle学习的第一天 --一.几个基础的关键字   1.select select (挑选) 挑选出显示的--列--(可以多列,用“,”隔开,*表示所有列),为一条 ...

  3. Django学习笔记---第一天

    Django学习笔记 1.Django的安装 //如果不指定版本号,默认安装最新版 pip3 install django==1.11.8 关于Django的版本和python的版本依赖关系,请看下图 ...

  4. ASP.NET Core 学习笔记 第一篇 ASP.NET Core初探

    前言 因为工作原因博客断断续续更新,其实在很早以前就有想法做一套关于ASP.NET CORE整体学习度路线,整体来说国内的环境的.NET生态环境还是相对比较严峻的,但是干一行爱一行,还是希望更多人加入 ...

  5. GIT学习笔记——第一章

    git之vim编辑器退出命令 # 学习笔记 张文军微博主页  张文军码云主页   张文军新浪云主页  张文军博客主页 ## 刚学习git,好多东西没接触过,进入vim后不知道如何出来了,网上找了很多都 ...

  6. 《JavaScript权威指南》学习笔记 第一天。

    这是零零散散的笔记,作为自己看书打demo的笔记.不足为各位学习,留作自己复习知识点备用. 1.检测对象中某个属性存在不存在: <script> // in 运算符 //不管是对象的自有属 ...

  7. PRML学习笔记第一章

    [转] PRML笔记 - 1.1介绍 模式识别的目标 自动从数据中发现潜在规律,以利用这些规律做后续操作,如数据分类等. 模型选择和参数调节 类似的一族规律通常可以以一种模型的形式为表达,选择合适模型 ...

  8. 菜鸟Python学习笔记第一天:关于一些函数库的使用

    2017年1月3日 星期二 大一学习一门新的计算机语言真的很难,有时候连函数拼写出错查错都能查半天,没办法,谁让我英语太渣. 关于计算机语言的学习我想还是从C语言学习开始为好,Python有很多语言的 ...

  9. AndroidStudio学习笔记-第一个安卓程序

    要带一个本科生做一部分跟安卓有点关系的项目,于是趁着机会学习一下编写安卓程序. 第一篇材料来自谷歌官方,传送门:https://developer.android.com/training/basic ...

  10. 2011斯坦福大学iOS应用开发教程学习笔记(第一课)MVC.and.Introduction.to.Objective-C

    blog.csdn.net/totogo2010/article/details/8205810  目录(?)[-] 第一课名称 MVC and Introduction to Objective-C ...

随机推荐

  1. svn使用方法介绍(1)

    TotoiseSVN的基本使用方法 在 项目管理实践教程一.工欲善其事,必先利其器[Basic Tools]中,我已经讲解了怎样安装TortoiseSVN.在上面的讲解中已经讲了怎么使用VisualS ...

  2. CSS3 笔记一(Rounded Corners/Border Images/Backgrounds)

    CSS3 Rounded Corners The border-radius property is a shorthand property for setting the four border- ...

  3. oneKey 系统备份

    oneKey系统备份,系统进入不了备份ghost界面 原因:备份文件名中有括号"()"

  4. JQuery 层次选择器

    <!DOCTYPE HTML> <html> <head> <title> 使用jQuery层次选择器 </title> <scrip ...

  5. java 级联删除文件夹下的所有文件

    public void deletefile(String delpath) throws Exception { try { File file = new File(delpath); // 当且 ...

  6. 微信JS SDK PHP Demo

    一.JSSDK类定义 <?php class JSSDK { private $appId; private $appSecret; public function __construct($a ...

  7. [问题2014S08] 解答

    [问题2014S08] 解答 (此解答由徐昊宸同学和鹿彭同学提供) 设 \(P_1(\lambda),P_2(\lambda),Q_1(\lambda),Q_2(\lambda)\) 为可逆 \(\l ...

  8. Install Google Pinyin on Ubuntu 14.04

    Install Google Pinyin on Ubuntu 14.04 I've been spending more and more time on Ubuntu and I'm not us ...

  9. 使用Sonatype Nexus搭建Maven私服后如何添加第三方JAR包?

    Sonatype Nexus简介 登录Nexus后,点击右侧的“Repositories”,显示当前Nexus所管理的Repository: 默认情况下Nexus为我们创建了以下主要的Reposito ...

  10. js 仿phptrim

    function trims(){ this.init = function(myarguments){ if(arguments.length===0){return false;} this.ar ...