文档章节

Objective C学习笔记

xiejuntao
 xiejuntao
发布于 2014/10/02 00:25
字数 1384
阅读 430
收藏 15

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
0
Objective-C 学习笔记

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

长平狐
2012/11/01
68
0
Go语言基础学习:变量

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

d_watson
2016/04/15
12
0
《从零开始学Swift》学习笔记(Day 69)——Swift与Objective-C混合编程之语言

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

智捷课堂
2016/02/24
25
0
iOS开发之Object-C和Cocoa [转]

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

ilscott
2012/12/13
0
0

没有更多内容

加载失败,请刷新页面

加载更多

EOS官方钱包keosd

EOS官方钱包的名称是keosd,它负责管理你的私钥,并且帮你进行交易的签名。 不过不幸的是,keosd钱包对普通用户并不友好,它是一个命令行程序,目前还没有像以太坊的mist那样的图形化界面,而...

汇智网教程
今天
23
0
ArrayList的实现原理以及实现线程安全

一、ArrayList概述 ArrayList是基于数组实现的,是一个动态的数字,可以自动扩容。 ArrayList不是线程安全的,效率比较高,只能用于单线程的环境中,在多线程环境中可以使用Collections.syn...

一看就喷亏的小猿
今天
24
0
Netty 备录 (一)

入职新公司不久,修修补补1个月的bug,来了点实战性的技术---基于netty即时通信 还好之前对socket有所使用及了解,入手netty应该不是很难吧,好吧,的确有点难,刚看这玩意的时候,可能都不知道哪里...

_大侠__
昨天
33
0
Django简单介绍和用户访问流程

Python下有许多款不同的 Web 框架。Django是重量级选手中最有代表性的一位。许多成功的网站和APP都基于Django。 Django是一个开放源代码的Web应用框架,由Python写成。 Django遵守BSD版权,初...

枫叶云
昨天
40
0
Spring Cloud Stream消费失败后的处理策略(四):重新入队(RabbitMQ)

应用场景 之前我们已经通过《Spring Cloud Stream消费失败后的处理策略(一):自动重试》一文介绍了Spring Cloud Stream默认的消息重试功能。本文将介绍RabbitMQ的binder提供的另外一种重试...

程序猿DD
昨天
21
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部