十九.一些规范


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. Programming In Scala笔记-第十九章、类型参数,协变逆变,上界下界

    本章主要讲Scala中的类型参数化.本章主要分成三个部分,第一部分实现一个函数式队列的数据结构,第二部分实现该结构的内部细节,最后一个部分解释其中的关键知识点.接下来的实例中将该函数式队列命名为Que ...

  2. Gradle 1.12用户指南翻译——第五十一章. 发布构件

    本文由CSDN博客貌似掉线翻译,其他章节的翻译请参见:http://blog.csdn.net/column/details/gradle-translation.html翻译项目请关注Github上 ...

  3. 20 ViewPager Demo3指示器

    MainActivity.java package com.qf.day20_viewpager_demo3; import java.util.ArrayList; import java.util ...

  4. JAVA面向对象-----extends关键字

    继承使用extends关键字实现 1:发现学生是人,工人是人.显然属于is a 的关系,is a就是继承. 2:谁继承谁? 学生继承人,发现学生里的成员变量,姓名和年龄,人里边也都进行了定义.有重 复 ...

  5. 深入浅出seesion和cookie

    session在计算机中,尤其是在网络应用中,称为"会话控制".session 对象存储特定用户会话所需的属性及配置信息.session跟踪是Web程序中常用的技术,用来跟踪用户的 ...

  6. Linux jar包 后台运行

    Linux 运行jar包命令如下: 方式一: java -jar shareniu.jar 特点:当前ssh窗口被锁定,可按CTRL + C打断程序运行,或直接关闭窗口,程序退出 那如何让窗口不锁定? ...

  7. Swift延迟加载的一种用途

    大熊猫猪·侯佩原创或翻译作品.欢迎转载,转载请注明出处. 如果觉得写的不好请多提意见,如果觉得不错请多多支持点赞.谢谢! hopy ;) 有以下一种情况: 我们试图用Cocoa的语音合成类NSSpee ...

  8. iOS开发关于适配iOS10以及Xcode8的相关新知识

    一.证书管理 用Xcode8打开工程后,比较明显的就是下图了,这个是苹果的新特性,可以帮助我们自动管理证书.建议大家勾选这个Automatically manage signing(Ps.但是在bea ...

  9. HTML5中 HTML表单和PHP环境搭建及与PHP交互 韩俊强的博客

    每日更新关注:http://weibo.com/hanjunqiang  新浪微博! 知识点概括:HTML表单/PHP环境搭建/表单提交数据与PHP交互 第一部分:HTML表单 <!DOCTYP ...

  10. Cassandra使用pycassa批量导入数据

    本周接手了一个Cassandra系统的维护工作,有一项是需要将应用方的数据导入我们维护的Cassandra集群,并且为应用方提供HTTP的方式访问服务.这是我第一次接触KV系统,原来只是走马观花似的看 ...