十九.一些规范


import系统自带的用尖括号<>来包含。

发现需求不清晰,一定要先搞明白才去做。

多文件开发,文件名和类名一致

命令行里的做法:(只是编译链接主文件,但是全部编译链接会出错)

1.每个文件都要引入主框架(如果使用了NSObject)
2.如果用到了其他类,也要引入
3.主文件要引入所有用到的类

正式的做法:(所有文件一起编译链接)

借鉴C语言的做法,写h文件来包含声明。

import不要包含源文件,容易发生重复定义错误(duplicate)。

把类的声明(@interface)放到.h文件中。

******定义一个类分为两个文件.h和.m
.h:放 成员变量 和 方法的声明(@interface)
.m:放 方法的实现(@implementation)
主文件则用来融合所有的.h

二十.XCode新建类


使用Cocoa Class创建类可以同时生成.h和.m

二十一.XCode断点调试


设置断点,在output框上测有空心向右的箭头按钮表示前进,把鼠标暂留在变量上可以查看详细信息。

单步按钮的前方是断点是否有效的按钮。

删除断点:按住断点向外拖

二十二.生成代码块


左键长按代码块直到出现箭头,然后拖入右下角代码块内



shortcut是触发条件,当检测到相应的输入就可以替换为相应的代码框

二十三.特有注释


#pragma mark xxx

可以用索引进行定位。

使用
#pragma mark - xxx 可以在方法前产生横线分隔符

特殊技巧

#pragma mark - group1
xx
xx
xx
xx
#pragma mark - group2
xx
xx
xx
xx

这样可以产生两组

二十四.多文件查看


采用的是和视图窗口内编辑一样的方法,
在View->Assistant内可以修改第二视窗的显示位置

二十五.点语法


为了兼容其他语言的点运算符。

当编译器遇到点语法,会把点语法转化成set方法

stu.age = 10;展开为:
[stu setAge : 10];

注意age并不是成员变量

p.age 是get方法,看有没有赋值。



前面的按钮可以在断点处跳入应该跳转的函数。

在get和set方法中不要再用点语法,否则会引发死循环。

点语法不是访问成员变量,而是转成set和get方法。

必须先定义set和get方法,才能使用点语法。

二十六.成员变量作用域


@private 只能在当前类的对象方法中实现

@protected 只能在当前类及其子类的对象方法中实现(在声明中什么都不写默认是@protected)

@public 任何地方都能直接访问对象的成员变量

@package 只要处在同一个框架中,就能直接访问

只要声明一次作用域,下面的都是该作用域。

在实现里面定义成员变量默认私有。不要这么写,因为包含.h时不能探测到。
因为.m不会被包含。

虽然子类不能访问父类的私有变量,但是内存中有该变量。

OC是单继承。

二十七.一些编译器特性


@property 可以自动生成某个成员变量的set和get方法声明。

例如对于
int _age这个成员变量:

@property int age;

@property后面的是对set的参数类型和get的返回值类型的说明。

会自动变成
  set方法:
  • (void)setAge:(int)age;
  get方法:
  • (int)age;

@synthesize 生成property的set和get实现。

对于上面的,用@synthesize age = _age来实现。
后面的表示真实访问的是哪个成员变量。

小技巧:类型一样的可以写在同一行。但是一般是分开写。
如果不写成员变量,@property会自动生成private成员变量。(加下划线的),会根据实现里面的=后面的来生成。

Xcode4.4以后,可以只写@property。

但是自动生成的是@private作用域。

@synthesize age;自动生成的是age成员变量而非_age,系统会自己使用self进行区分。

如果已经写了get或者set方法,Xcode会自动生成没有的,而不会覆盖已有的。

设成员变量为_xxx
则get的标准写法为: 
- (类型)xxx{
return _xxx;
}
set的标准写法为:
- (void)setXxx : (类型)xxx{
_xxx = xxx;




OC语言(三)的更多相关文章

  1. iOS开发-OC语言 (三)字符串

    p.p1 { margin: 0.0px 0.0px 0.0px 0.0px; text-align: center; font: 24.0px "PingFang SC" } p ...

  2. swift调用oc语言文件,第三方库文件或者自己创建的oc文件——简书作者

    Swift是怎样调用OC的第三方库的呢?请看下面详情: 情况一: 1.首先打开Xcode,iOS->Application->Single View Application, 选Next. ...

  3. OC语言前期准备

    OC语言前期准备 一.OC简介 Oc语言在c语言的基础上,增加了一层最小的面向对象语法,完全兼容C语言,在OC代码中,可以混用c,甚至是c++代码. 可以使用OC开发mac osx平台和ios平台的应 ...

  4. OC语言基础知识

    OC语言基础知识 一.面向对象 OC语言是面向对象的,c语言是面向过程的,面向对象和面向过程只是解决问题的两种思考方式,面向过程关注的是解决问题涉及的步骤,面向对象关注的是设计能够实现解决问题所需功能 ...

  5. OC语言@property @synthesize和id

    OC语言@property @synthesize和id 一.@property @synthesize关键字 注意:这两个关键字是编译器特性,让xcode可以自动生成getter和setter的声明 ...

  6. OC语言构造方法

    OC语言构造方法 一.构造方法 (一)构造方法的调用 完整的创建一个可用的对象:Person *p=[Person new]; New方法的内部会分别调用两个方法来完成2件事情,1)使用alloc方法 ...

  7. OC语言类的本质和分类

    OC语言类的深入和分类 一.分类 (一)分类的基本知识  概念:Category  分类是OC特有的语言,依赖于类. 分类的作用:在不改变原来的类内容的基础上,为类增加一些方法. 添加一个分类: 文件 ...

  8. OC语言description方法和sel

    OC语言description方法和sel 一.description方法 Description方法包括类方法和对象方法.(NSObject类所包含) (一)基本知识 -description(对象 ...

  9. OC语言-03-OC语言-三大特性

    一.封装 1> 封装的定义 隐藏对象的属性和实现细节,仅对外公开接口,控制在程序中属性的读和修改的访问级别 2> 封装的好处 可以通过set方法防止为成员变量设置不合理的值 仅向外部提供公 ...

  10. OC语言-02-OC语言-基础知识

    一.基础语法 1> OC语言和C语言 C语言是面向过程的语言,OC语言是面向对象的语言 OC语言继承了C语言,并增加了面向对象的思想 以下内容只介绍OC语言与C语言的不同之处 2> 关键字 ...

随机推荐

  1. python模块:时间处理模块

    http://blog.csdn.net/pipisorry/article/details/53067168 常用python自带时间处理模块 python自带的时间处理模块参考[操作系统服务:ti ...

  2. UE4使用第三方库读写xml文件

    原文链接:http://gad.qq.com/article/detail/7181031 本文首发腾讯GAD开发者平台,未经允许,不得转载 在游戏开发过程中,读写xml几乎已经成为不可或缺的功能,但 ...

  3. 【安卓开发】Android系统中Parcelable和Serializable的区别

    http://greenrobot.me/devpost/android-parcelable-serializable/ 进行Android开发的时候,我们都知道不能将对象的引用传给Activiti ...

  4. Java中synchronized的使用实例

    一.使用场景 在负责后台开发的时候,很多时候都是提供接口给前端开发人员去调用,会遇到这样的场景: 需要提供一个领奖接口,每个用户名只能领取一次,我们可以将成功领取的用户在数据库用个标记保存起来.如果这 ...

  5. Android 玩转IOC,Retfotit源码解析,教你徒手实现自定义的Retrofit框架

    CSDN:码小白 原文地址: http://blog.csdn.net/sk719887916/article/details/51957819 前言 Retrofit用法和介绍的文章实在是多的数不清 ...

  6. (NO.00005)iOS实现炸弹人游戏(十):游戏主角(三)

    大熊猫猪·侯佩原创或翻译作品.欢迎转载,转载请注明出处. 如果觉得写的不好请多提意见,如果觉得不错请多多支持点赞.谢谢! hopy ;) 下面我们来看游戏主角类里面几个播放特殊动画的方法,首先从run ...

  7. iOS视图控制器初始化问题

    最近在群里见不少人 问到用视图控制器的alloc /init方法初始化的时候,出来的是黑色的空界面.之前我也遇到过,所以在这里总结下. 我们在项目中肯定都会用到自定义的ViewController,而 ...

  8. was unable to start within 45 seconds. If the server requires more time, try increasing the timeout

    在eclipse启动tomcat时遇到超时45秒的问题: Server Tomcat v7.0 Server at localhost was unable to startwithin 45 sec ...

  9. Windows7 x64 跨平台开发环境安装配置

    ======================================================================= Windows7 x64 跨平台开发环境安装配置 201 ...

  10. 分析比较KafkaWordCount及DierctKafkaWordCount

    参考spark官方文档,Spark Streaming + Kafka Integration Guide,其中提到Spark Streaming如何从Kafka中接收数据.主要有两种方法,一种是使用 ...