文档章节

Objective C学习笔记

xiejuntao
 xiejuntao
发布于 2014/10/02 00:25
字数 1384
阅读 429
收藏 15
点赞 0
评论 0

1、代码文件类型:

(1)、[.h]头文件

(2)、[.m]c代码

(3)、[.mm]c++代码

2、调用头文件的方法#import,且只在没有调用过的时候调用一次,类似于PHP的require_once。

3、字符串NSString

通过@标志符,可由字符串常量定义NSString对象。如,

NSString *f = @”岁月长”;

4、类(Class)

(1)、定义

Objective-C定义类先用在.h头文件里定义接口,然后在.m代码文件里实现。

.h头文件

 

@implementation到@end之间的部分被看作是类的定义。

.m文件

 

(2)、类实例化

类名*  类实例名=[[类名 alloc] init]

类名*  类实例名=[类名 new]

(3)、类型

Objective-C的对象定义可以支持强类型的实例,以及弱类型(用“id”表示)的实例的定义。

 

 

(4)、方法(Methods)

方法Methods亦称函数,在Objective-C的类与java Class类似,可以定义“实例的方法”和“类的方法”。

用负号[-]表示该方法为实例的方法

 

(5)、发送消息

Objective-C调用方法是通过发送消息给对应的实例对象。发送消息的方式其实是和其它的语言一样就是调用实例对象的方法,Ojbective-C独特的地方就是方法的调用是通过一个方法名+零个或多个标识符+零个或多个参数,而一般语言只需要一个方法名+零个或多个参数就可以了。Ojbective-C之所以把调用方法称为发送消息,是因其所有的消息发送之后都是动态传递给实例对象。并且,如果一个子类定义了一个和父类相同方法名+标识符的方法之后,子类会先收到该消息,然后选择性的是否继续将该消息传递给父类。

发送消息是通过一对方括号[]来实现,如

实例对象在左边,消息以及参数等的定义在右边。且为避免生成多余的临时变量,Objective-C允许直接使用消息的结果,如下

 

(6)、类方法

类似于静态方法,定义的时候和实例的方法有区别的地方只是在开头的符号为加号[+]。

(7)、属性@property

属性是一个可以取代方法的方便符号。在类中声明定义属性时,并不创建新的实例,就是一个能够方便快捷的用来访问实际已经存在的变量的。也就是说,属性其实并没有真正的存储任何数据。

属性还可以定义一些访问该属性时的限制或者如何获取该属性,例如指定copy用来复制该属性,readonly用来指定该属性只读。

 

调用某实例的属性有两种方法,一种是通过方括号,和调用方法类似,另外一种是通过点符号[.]。

 

(8)、方法返回值

在Objective-C里面方法的返回类型需要用圆括号包住,当编译器看到减号或者加号后面的括号了之后,就会认为这是在声明方法的返回值。若不声明返回值,编译会给没有写显式返回值的函数加上一个默认的返回值,它的类型是id。

(void)申明没有返回值。

(9)、self和super

self等同于this,其本身是一个id类型的一个指针变量。

访问变量self->变量名称。

super访问超类的方法或变量。

5、协议和委托(Protocols and Delegates)

Objective-C中的协议(Protocols)类似于常用的接口,协议(Protocols)中定义的方法,在类中实现。

 

6、内存使用

(1)、ReferenceCounted,即应用计数,过程:alloc--->retain--->release--->--->release--->dealloc。

(2)、NSAutoreleasePoolalloc

7、打印日志NSLog

NSLog(@“岁月长,衣衫薄。”);

8、布尔值

在Objective-C里面,Bool其实是singed char,YES是1NO0。其里面的所有逻辑判断和C语言保持兼容,如果数据不是0判断为真,如果数据是0那么就判断为假。

9、SEL、Class、IMP

(1)、Objective-C在编译的时候,会根据方法的名字(包括参数序列)生成一个用来区分这个方法的唯一标识,这个标识就是SEL类型。

SEL 变量名=@selector(方法名字);

SEL 变量名=NSSelectorFromString(方法名字的字符串);

NSString* 变量名=NSStringFromSelector(SEL 变量名);//返回SEL变量对应的方法名。

(2)、Class类似于java中的Class,可以用来获取所定义类的相关信息.。

Class 变量名=[类或对象 class];

Class 变量名=[类或对象 superclass];

Class 变量名=NSClassFromString(类名字的字符串);

NSString* 变量名=NSStringFromClass(Class 变量名);//返回类名字。

(3)、IMP,给一个方法起一个名字,实现动态调用,不用再使用[对象 message]的方式。

Human* human =[Human new];  
 Man* ma=[man new];  //根据方法名say找到该方法的id,将sel与其绑定;  
 SEL sel =@selector(say);//也可以这样写:SEL sel=NSSelectorFromString(@"say");  
 IMP imp1 = [human methodForSelector:sel];       
 IMP imp2 = [ma methodForSelector:sel];       
  
 imp1(human,sel);  
 imp2(ma,sel);  
//因为每个方法都有自己的地址,这种方式直接找到地址区分相同ID的方法,效率最高,但灵活性不如SEL方式。


10、实例变量作用域

@private

@protected

@public

其意义跟java相应的关键字等同。

而类方法在Objective-C里面,从理论上来说所有的方法都是公有的。

11、Final

不想让某个方法被重写,只需定义一个宏

#define FINAL

© 著作权归作者所有

共有 人打赏支持
xiejuntao
粉丝 6
博文 27
码字总数 18349
作品 0
广州
程序员
Swift 个人学习笔记 - 06: 控制流

本文章纯粹是中文版《The Swift Programming Language》的学习笔记,所以绝大部分的内容都是文中有的。本文是本人的学习笔记,不是正式系统的记录。仅供参考 以下还是有很多没看懂、不确定的...

amc ⋅ 2017/02/22 ⋅ 0

Go语言基础学习:变量

Go语言基础学习(一)变量 猜你喜欢 Ceylon语言学习笔记(1) 《从零开始学Swift》学习笔记(Day 69)——Swift与Objective-C混合编程之语言 go语言学习-常量 GO语言学习-复杂类型(2) Go语言学习...

d_watson ⋅ 2016/04/15 ⋅ 0

Objective-C 学习笔记

1、 凡使用到@的地方,都是对标准C的扩展 2、 Objective-C的头文件包含与C++差不多,但可以通过@class实现跨文件依赖 Objective-C 是对C 的扩展,其扩展关键字列表如下 @class, @interface, ...

长平狐 ⋅ 2012/11/01 ⋅ 0

《从零开始学Swift》学习笔记(Day 69)——Swift与Objective-C混合编程之语言

《从零开始学Swift》学习笔记(Day 69)——Swift与Objective-C混合编程之语言 原创文章,欢迎转载。转载请注明:关东升的博客 在Swift语言出现之前,开发iOS或OS X应用主要使用Objective-C...

智捷课堂 ⋅ 2016/02/24 ⋅ 0

IOS学习笔记——Objective-c基础(一)

最近自学ios,ios的支持语言是Objective-c,所以要学习ios就需要先学习Objective-c语言。当掌握了Objective-c的基础知识之后,我们就可以入手学习iOS开发做出一些自己的应用。 我现在还是...

丛林迷雾 ⋅ 2012/12/30 ⋅ 1

Objecitive-C中的nil

当我学习OC的时候,我总是忍不住在对比。Actionscript是如何实现,而oc又是如何实现。这不,碰到nil的时候我发现了很大的不同之处。做个笔记。 在as中,如果将一个对象置为null,相当于空指针...

ChildhoodAndy ⋅ 2013/03/21 ⋅ 3

iOS开发之Object-C和Cocoa [转]

Objective-C Objective-C,是扩充C的面向对象编程语言。是在C的基础上,加入面向对象特性扩充而成的编程语言。目前,Objective-C主要应用于Mac OS X和iOS开发,而在NeXTSTEP和OpenStep中它更...

ilscott ⋅ 2012/12/13 ⋅ 0

《从零开始学Swift》学习笔记(Day 70)——Swift与Objective-C混合编程之

《从零开始学Swift》学习笔记(Day 70)——Swift与Objective-C混合编程之Swift与Objective-CAPI映射 原创文章,欢迎转载。转载请注明:关东升的博客 Swift与Objective-C API映射 在混合编程...

智捷课堂 ⋅ 2016/02/26 ⋅ 0

获取私有变量的值

Objective-C学习笔记之获取私有变量的值是本文要介绍的内容,主要讲述了如何获取私有变量的值,来看本文详细内容。 1、下面是自己定义的一个类,里面有一个私有变量mt_,并且在初始化值为"Ha...

Liuxz-aaa ⋅ 2011/09/09 ⋅ 0

Swift 个人学习笔记 - 09: 属性

本文章纯粹是中文版《The Swift Programming Language》的学习笔记,所以绝大部分的内容都是文中有的。本文是本人的学习笔记,不是正式系统的记录。仅供参考 以下还是有很多没看懂、不确定的...

amc ⋅ 2017/03/25 ⋅ 0

没有更多内容

加载失败,请刷新页面

加载更多

下一页

JavaScript零基础入门——(八)JavaScript的数组

JavaScript零基础入门——(八)JavaScript的数组 欢迎大家回到我们的JavaScript零基础入门,上一节课我们讲了有关JavaScript正则表达式的相关知识点,便于大家更好的对字符串进行处理。这一...

JandenMa ⋅ 今天 ⋅ 0

sbt网络问题解决方案

转自:http://dblab.xmu.edu.cn/blog/maven-network-problem/ cd ~/.sbt/launchers/0.13.9unzip -q ./sbt-launch.jar 修改 vi sbt/sbt.boot.properties 增加一个oschina库地址: [reposit......

狐狸老侠 ⋅ 今天 ⋅ 0

大数据,必须掌握的10项顶级安全技术

我们看到越来越多的数据泄漏事故、勒索软件和其他类型的网络攻击,这使得安全成为一个热门话题。 去年,企业IT面临的威胁仍然处于非常高的水平,每天都会看到媒体报道大量数据泄漏事故和攻击...

p柯西 ⋅ 今天 ⋅ 0

Linux下安装配置Hadoop2.7.6

前提 安装jdk 下载 wget http://mirrors.hust.edu.cn/apache/hadoop/common/hadoop-2.7.6/hadoop-2.7.6.tar.gz 解压 配置 vim /etc/profile # 配置java环境变量 export JAVA_HOME=/opt/jdk1......

晨猫 ⋅ 今天 ⋅ 0

crontab工具介绍

crontab crontab 是一个用于设置周期性被执行的任务工具。 周期性执行的任务列表称为Cron Table crontab(选项)(参数) -e:编辑该用户的计时器设置; -l:列出该用户的计时器设置; -r:删除该...

Linux学习笔记 ⋅ 今天 ⋅ 0

深入Java多线程——Java内存模型深入(2)

5. final域的内存语义 5.1 final域的重排序规则 1.对于final域,编译器和处理器要遵守两个重排序规则: (1)在构造函数内对一个final域的写入,与随后把这个被构造对象的引用赋值给一个引用...

江左煤郎 ⋅ 今天 ⋅ 0

面试-正向代理和反向代理

面试-正向代理和反向代理 Nginx 是一个高性能的反向代理服务器,但同时也支持正向代理方式的配置。

秋日芒草 ⋅ 今天 ⋅ 0

Spring 依赖注入(DI)

1、Setter方法注入: 通过设置方法注入依赖。这种方法既简单又常用。 类中定义set()方法: public class HelloWorldOutput{ HelloWorld helloWorld; public void setHelloWorld...

霍淇滨 ⋅ 昨天 ⋅ 0

马氏距离与欧氏距离

马氏距离 马氏距离也可以定义为两个服从同一分布并且其协方差矩阵为Σ的随机变量之间的差异程度。 如果协方差矩阵为单位矩阵,那么马氏距离就简化为欧氏距离,如果协方差矩阵为对角阵,则其也...

漫步当下 ⋅ 昨天 ⋅ 0

聊聊spring cloud的RequestRateLimiterGatewayFilter

序 本文主要研究一下spring cloud的RequestRateLimiterGatewayFilter GatewayAutoConfiguration @Configuration@ConditionalOnProperty(name = "spring.cloud.gateway.enabled", matchIfMi......

go4it ⋅ 昨天 ⋅ 0

没有更多内容

加载失败,请刷新页面

加载更多

下一页

返回顶部
顶部