十九.一些规范


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. Web自动化框架LazyUI使用手册(8)--excel数据驱动详解(ExcelDataProvider)

    概述 框架提供了excel数据驱动方式运行测试用例的工具,本文将针对数据驱动,进行详细演示. 详见类:lazy.test.ui.browser.ExcelDataProvider 被测对象: http ...

  2. 源码篇——Handler消息机制

    Handler消息机制 Message 消息 Message.obtain() Message msg = new Message() Handler new Handler(){ handlerMe ...

  3. Swift中switch强大的模式匹配

    不少人觉得Swift中switch语句和C或C++,乃至ObjC中的差不多,此言大谬! 让本猫带领大家看一下Swift中switch语句模式匹配的威力. 所谓模式匹配就是利用一定模式(比如couple ...

  4. 2apt-get命令,deb包安装,源码安装

    1 安装卸载软件 更新源服务器列表 sudovi /etc/apt/sources.list 更新完服务器列表后需要更新下源 sudoapt-get update 更新源 sudoapt-get in ...

  5. MPI二维笛卡尔坐标划分【1】

    本文简单演示,如何对现有进程进行二维划分,如何获得进程的X和Y坐标. 只有一段程序: #include <mpi.h> #include <stdio.h> #include ...

  6. [ExtJS5学习笔记]第二十二节 Extjs5中使用beforeLabelTpl配置给标签增加必填选项星号标志

    本文地址:http://blog.csdn.net/sushengmiyan/article/details/39395753 官方例子:http://docs.sencha.com/extjs/5. ...

  7. Android 系统当中各种尺寸单位的定义及使用

    一,Android 各种标尺单位的含义: px:表示屏幕实际的象素.例如,320*480的屏幕在横向有320个象素,在纵向有480个象素.pt:表示一个点,是屏幕的物理尺寸.大小为1英寸的1/72.i ...

  8. 2014年7月10日,我人生的最重要Upgrade

    2014年7月10日上午,我的小公主顺利的出生于国妇婴.之前各种紧张,各种不安.在不安中的前天晚上陪着来上海的董博士于方先生在人民广场聚餐.大家都是工作几年的,各种感慨,对于工作中的零零种种.还有对未 ...

  9. java虚拟机工具入门

    jps 能显示现在都有那些java程序运行 C:\Users\Administrator>jps 16964 DeadLockJstack 9172 PULSEI~1.JAR 19392 Jps ...

  10. JPA(三)之实体关系一对多(多对一)

     1.背景介绍: 对于购买商品时,订单信息(Order)和订单商品信息(OrderItem)的关系就是一对多的关系. 2.实体bean: Order.java代码 ? 1 2 3 4 5 6 7 ...