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

.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)的更多相关文章
- ActionBarSherlock学习笔记 第一篇——部署
ActionBarSherlock学习笔记 第一篇--部署 ActionBarSherlock是JakeWharton编写的一个开源框架,使用这个框架,可以实现在所有的Android ...
- oracle学习笔记第一天
oracle学习笔记第一天 --oracle学习的第一天 --一.几个基础的关键字 1.select select (挑选) 挑选出显示的--列--(可以多列,用“,”隔开,*表示所有列),为一条 ...
- Django学习笔记---第一天
Django学习笔记 1.Django的安装 //如果不指定版本号,默认安装最新版 pip3 install django==1.11.8 关于Django的版本和python的版本依赖关系,请看下图 ...
- ASP.NET Core 学习笔记 第一篇 ASP.NET Core初探
前言 因为工作原因博客断断续续更新,其实在很早以前就有想法做一套关于ASP.NET CORE整体学习度路线,整体来说国内的环境的.NET生态环境还是相对比较严峻的,但是干一行爱一行,还是希望更多人加入 ...
- GIT学习笔记——第一章
git之vim编辑器退出命令 # 学习笔记 张文军微博主页 张文军码云主页 张文军新浪云主页 张文军博客主页 ## 刚学习git,好多东西没接触过,进入vim后不知道如何出来了,网上找了很多都 ...
- 《JavaScript权威指南》学习笔记 第一天。
这是零零散散的笔记,作为自己看书打demo的笔记.不足为各位学习,留作自己复习知识点备用. 1.检测对象中某个属性存在不存在: <script> // in 运算符 //不管是对象的自有属 ...
- PRML学习笔记第一章
[转] PRML笔记 - 1.1介绍 模式识别的目标 自动从数据中发现潜在规律,以利用这些规律做后续操作,如数据分类等. 模型选择和参数调节 类似的一族规律通常可以以一种模型的形式为表达,选择合适模型 ...
- 菜鸟Python学习笔记第一天:关于一些函数库的使用
2017年1月3日 星期二 大一学习一门新的计算机语言真的很难,有时候连函数拼写出错查错都能查半天,没办法,谁让我英语太渣. 关于计算机语言的学习我想还是从C语言学习开始为好,Python有很多语言的 ...
- AndroidStudio学习笔记-第一个安卓程序
要带一个本科生做一部分跟安卓有点关系的项目,于是趁着机会学习一下编写安卓程序. 第一篇材料来自谷歌官方,传送门:https://developer.android.com/training/basic ...
- 2011斯坦福大学iOS应用开发教程学习笔记(第一课)MVC.and.Introduction.to.Objective-C
blog.csdn.net/totogo2010/article/details/8205810 目录(?)[-] 第一课名称 MVC and Introduction to Objective-C ...
随机推荐
- [转] ubuntu开启SSH服务
点击阅读原文 SSH分客户端openssh-client和openssh-server如果你只是想登陆别的机器的SSH只需要安装openssh-client(ubuntu有默认安装,如果没有则sudo ...
- osip状态机分析
转载于:http://blog.csdn.net/lbc2100/article/details/48342889 OSIP的核心是系统状态机,在不同情况下,系统处于不同的状态,在某一状态下当系统发生 ...
- ASP。net 测验
Login.aspx using System; using System.Collections.Generic; using System.Linq; using System.Web; usin ...
- Just a Hook(HDU1698 线段树的简单应用)
Just a Hook Time Limit: 4000/2000 MS (Java/Others) Memory Limit: 32768/32768 K (Java/Others) Prob ...
- 【Java】代处理?代理模式 - 静态代理,动态代理
>不用代理 有时候,我希望在一些方法前后都打印一些日志,于是有了如下代码. 这是一个处理float类型加法的方法,我想在调用它前打印一下参数,调用后打印下计算结果.(至于为什么不直接用+号运算, ...
- c语言头文件中定义全局变量的问题
c语言头文件中定义全局变量的问题 (转http://www.cnblogs.com/Sorean/) 先说一下,全局变量只能定义在 函数里面,任意函数,其他函数在使用的时候用extern声明.千万不要 ...
- [问题2014A01] 解答三(升阶法,由董麒麟同学提供)
[问题2014A01] 解答三(升阶法,由董麒麟同学提供) 引入变量 \(y\),将 \(|A|\) 升阶,考虑如下行列式: \[|B|=\begin{vmatrix} 1 & x_1-a & ...
- Web页面速度测试工具
开发框架的时间,想测试单例和多例下对性能的影响,找了下没有特别简单易用的测试工具. 估摸着搞了一个小工具. 针对.net Framework的2.0,3.5,4.0版本. WebHttpTest2.0 ...
- [Mysql] 一些记录
1> 修改表的字段 alter table trade_market change reqype reqtype int(10) unsigned not null;alter table tr ...
- (原创)详解Quartus导出网表文件:.qxp和.vqm
当项目过程中,不想给甲方源码时,该如何?我们可以用网表文件qxp或者vqm对资源进行保护. 下面讲解这两个文件的具体生成步骤: 一.基本概念 QuartusII的qxp文件为QuartusII Exp ...