Objective-C语法总结

看来不精通OC还是不行的,今天开始再重新来回顾一遍OC所有的语法。
从无到有凝练一遍。
加油💪!

第一章 基础部分

1.1 程序逻辑结构

Objective-C 的程序分为三个部分

  • @interface部分
    这一部分声明了相关类、属性等的声明
    在实际的工程中,这部分的声明写在.h文件里面。也有一些属性(出于方便?)会定义.m文件里。
  • @implementation部分
    这一部分定义了相关类、属性等的声明,
    在实际的工程中,这部分的声明写在.m文件里面。
  • Program部分
    这一部分以main函数开头。实际的工程里面涉及到底层代码的入口?

1.2 类、属性语法

[ClassName Method]
可以理解为 [Receiver Message]
初始化一个类

ClassName *VariableName = [[ClassName alloc] init]]

第二章 控制流-循环结构

2.1 for 循环

OC的For循环跟C语言的如出一辙。

for (n = 1, sum = 0; n <= 10; n++ ) {
    sum = sum + n;
}

for 循环的任何位置都可以包含多个表达式 ,只要用逗号分隔这些表达式(不是多条语句而是多个表达式)即可。

2.2 while 语句

本章内容都是与C相似

while ( expression )
    program statement

2.3 do 语句

do 语句是while的简单转置,它把循环条件放在循环的结尾,而不是开头。

do
    program statement
while (  expression );

2.4 break 语句

break 退出当前循环

break;

2.5 continue语句

continue 跳过当前循环中的某些语句直到当前这环循环的结尾

第三章 控制流-选择结构

3.1 if语句

if ( expression ) 
   program statement

3.2 if-else结构

if ( expression )
   program statement 1
else 
   program statement 2

3.3 复合条件测试

  • 逻辑与 &&
  • 逻辑或 ||

3.4 switch 语句

不添加break会自动贯穿

switch ( expression )
{
    case value1:
        program statement
        program statement
          ...
        break; 
    case value2:
    case value3:
        program statement
        program statement
          ...
        break; 
      ...
    case valueN:
        program statement
        program statement
          ...
        break; 
    default:
        program statement
        program statement
          ...
        break;
}

3.5 条件运算符

condition ? expression1 : expression2

第四章 类

4.1 分离接口和实现文件

通常类的声明( @interface 部分 )要放在它自己的名为 ClassName.h 的文件中。 而类的定义( @implementation 部分 )通常放在同名的ClassName.m。 并在ClassName.m文件中使用以下语句将接口文件导入到实现文件中去#import "ClassName.h"

< >是引用系统文件。
" "双引号是引用本地文件

4.2 合成存取方法

1.在@interface 中声明的时候在属性前面加上 @property
2.在@implemetation 中实现的时候在属性前面加上 @synthesize

如果没有给变量加上存取方法的话,这个变量只能在类的内部被访问。也就是说用对象访问属性 [ObjectName propertyName] 会失败。

注意⚠️:如果只用了@property 而没有用@sythesize的话,编译器生成的实例变量会以下划线 _ 字符作为变量名称的第一个字符。

除了自动存取方法意外,用同名函数setProperty: value 可以定义设值方法,同名的property: 可以定义取值方方法。

注意⚠️: 自动合成的方法不要以 new,alloc,copyinit开头,因为编译器会自动合成相应的方法。

@interface ClassName : NSObject
@property type propertyName;
@end

@implementation ClassName : NSObject
@synthesize propertyName;
@end

4.3 访问属性

定义一个类ClassA
类有一个属性aProperty

ClassA className = [[ClassA alloc] init ];
// 访问属性
className.aProperty //方式一
[className aProperty] //方式二

注意⚠️: .点运算符通常用在属性上,用于设置或取得实例变量的值。也就是说除了访问设置和取值方法外,在良好的编码风格上来说,只能访问属性。

4.4 方法

4.4.1 多参数方法

@interface Class : NSObject
- (void) runFromAPlace : (NSString *) aPlace toAPlace: (NSString *) aPlace;

4.4.2 不带参数名的方法

@interface Class : NSObject
- (void) runFromAPlace : (NSString *) aPlace: (NSString *) aPlace;

4.5 变量

4.5.1 局部变量

局部变量是基本的C数据类型,并没有默认的初始值,所以在使用前要先赋值,。局部变量初始化为nil。
方法的参数就是一种局部变量。 但是如果方法的参数是类的话,因为类是引用的,所以可以修改里面的数据。

4.5.2 static 静态变量

在变量声明前加上关键字 static, 可以使局部变量多次调用保留同一个值
静态变量在程序开始时初始化一次,自动赋值为 0

注意⚠️: 类方法中定义的静态变量在被不同的实例调用时,引用的是同一个静态变量。比如一个方法中有一个统计次数的静态变量 count, 所有实例调用它都会让它加一,所以它统计的是所有对象的次数之和。
通常会将变量的声明放在 implementation 文件的开始处使得所有方法都可以访问到。

4.6 在方法中分配和返回对象

不管对象在那里被创建,只要它的引用为0就会被销毁,因为在方法里面创建并返回的对象始终被引用,所以没有背销毁。而局部变量的作用域只有在方法内。所以,在方法结束后,就没有对它的引用,也就自然被销毁了。

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 203,324评论 5 476
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 85,303评论 2 381
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 150,192评论 0 337
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 54,555评论 1 273
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 63,569评论 5 365
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 48,566评论 1 281
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 37,927评论 3 395
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 36,583评论 0 257
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 40,827评论 1 297
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 35,590评论 2 320
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 37,669评论 1 329
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 33,365评论 4 318
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 38,941评论 3 307
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 29,928评论 0 19
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 31,159评论 1 259
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 42,880评论 2 349
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 42,399评论 2 342

推荐阅读更多精彩内容