OC课程笔记总结4:开发注意

课程:开发注意

基础使用:NSString ,这个类是字符串处理类,关键字@NSString.

在 C 中,输出字符串用 %s 来接收,而在 oc 中,定义了一个 NSString 字符串后,用 %@ 来接收。

NSString 是一个类,有他自己的方法,其中有一个方法:stringWithFormat : (字符串格式)

类方法用类名调用,用法如下: 

NSString *_str = [NNString stringWithFormat:@"your macbook pro %d inch and %d RMB ",inch,price];

这条语句表示了类名调用了一个类方法,这个类方法的作用是将参数转换为一个字符串,即函数返回一个字符串,用指针 str 接收。

在 OC 中有非常多的创建字符串的方式。在实际开放中,通常使用 OC 的字符串方式,而不会去用 c 的字符串方式。并且一定要记住任何属性名要用下划线开头。

使用 oc 的字符串方法即使用面向对象的思想去处理字符串,即把字符串当成对象,对象有着自己的属性,字符串长度就是一个属性,通过调用对象方法,可以很容易的获得字符串的长度。

该方法返回的是字数的值,类型是unsign long,包括中文字数和英文字母数以及每一个空格数。


编写代码规范注意:注释左右要加空格,等号左右一定也要加空格。在OC中只用#import,不要用include。属性名和方法名如果有要求一定要按要求写,注意大小写。系统自带文件都要用<>,自己编写的文件用“”;在项目中如果对项目有疑问一定要问清楚,避免做无用功。


拿到一个程序设计目标时,首先判断完成这个目标需要多少个类,然后在开始分析每个类的作用。

实际编写代码时,在声明成员变量是用{}大括号括住,大括号之后不用跟分号结尾。所有方法声明写在大括号后面,记得要以@end结束。

在实现方法时,对自身属性的返回不需要加上self。

方法中变量类型名和参数名之间不用加空格,

在定义方法时如果有重复步骤了,分析是否可以把重复步骤提取出来,并用[self->方法名:参数名]   来进行调用。

设置set方法是为了过滤设置的属性值是否符合所规定的要求。

调用属性用指针加箭头,调用方法不用加箭头。

当参数是一个对象时,参数的数据类型永远是一个指针,一定要加上*号表示指向某个类的指针。

在编写代码时可以用到一些已经有的代码程序,方便实现一些基本功能,如何找出这些程序在哪里?在哪个头文件???

类方法只能有类名调用,对象方法也只能由对象名调用

要灵活设计类方法和对象方法,不需要访问到属性时可以考虑类方法。


想要定义一个函数返回值为字符串,并且将这个字符串嵌入另一个字符串中输出如何操作?????????????????

如何指向一个带有参数的字符串?????????????????


抽取重复的步骤又称为代码重构,重构的作用就是为了提高代码的复用率,对于不同的参数,同一份代码都可以进行处理。

一个经验丰富的程序员不一定是代码最简短的程序员,一个程序员能记住不同形状轮子的个数越多,他的经验越丰富。轮子也可以理解为齿轮,可以参考OC官方的钟表图,

面向对象的内部构造就是钟表的内部构造,钟表内部通过无数的轮子组合实现了钟表的功能,当没有合适的齿轮时,程序员可以自己创造,但是如果已经有了符合要求的齿轮,程序员可以直接拿来使用,

而不用在花费时间自己去创造齿轮,在编程代码中,齿轮即实现不同功能的函数,了解不同函数的使用方法和实现功能,是一个程序员的必经之路。


如何查看头文件中包含的函数的源代码?????????????????


类方法中也可以使用对象方法,前提是已经创建了对象。但是如果类方法中要涉及到对象的属性,那也必须先有对象。

main函数返回值类型应该写为int,并且要有return 0语句作为结束。

对于函数和参数的命名也没必要非常细致,简洁明了是最好的,但是首先明确表达的意思,即明了是第一位,简洁是第二位。


OC中打印输出BOOL值用%@接收

开发中每一个类最好单独写在一个文件,而主函数单独写在一个文件,调用所有的类。把不同类的。m文件#import即可,不是包含自定义类的。h 文件

而是。m 文件。

错误总结:warning: control reaches end of non-void function

这个警告表示的意思是:控制到达非void函数的结尾。就是说你的一些本应带有返回值的函数到达结尾后可能并没有返回任何值。这时候,最好检查一下是否每个控制流都会有返回值。检查是否漏写 return 语句。

警告2:

 not found (return type defaults to 'id')

这个警告表示某个对象方法没有找到,这时候一定是程序代码中写错了,要仔细检查。

一定要认真对待每一个错误和警告。


默认的对象属性是 protect,只有本类对象以及本类的 子类对象可以访问。

当一个类的某个属性是其他类的对象时,在访问各自的属性时要注意设置 get 方法来获取。

严格来说应该为每一个属性设置 get 方法。通常的编码规范建议一个属性的set和get 靠近写,不要写完全部set再写全部的get,并且不同属性的方法之间用注释隔开,方便阅读。


类与类的关系可以分为继承和组合,继承即父子关系,组合即某一个类是另一个类的一个属性。传递一个类对象只能通过指针来完成。

在定义类型是其他类的对象的属性时,初始化该属性时一定要先建立一个对象,然后把对象的指针传给这个属性。如果没有进行对指向其他类的属性的初始化赋值,

那么这个属性的值是指向空白的nil。即如果一个类的某个属性是另外一个类对象,那么实际在这个类的存储空间中,存储的是一个指针来指向另一个对象而已

在NSLog中,是无法直接输出BOOL值 YES 或者NO的,因为在OC中,布尔值等于整形值1和0,直接输出也是输出1和0,这时候可以通过一个三元运算符

BOOL?@“YES”:@"NO"

来根据BOOL型变量的值来转换为字符串输出,接收字符串用%@来接收。


凡是对象都必须用指针去接收。指针变量初始默认值为0,即地址值为0,谁也不指向。只要有了对象,都会在内存空间中开辟一个存储空间,通过指针来对这些空间进行操作。

每个对象都有自己的空间,类比于自然界,每个实际存在都占有一定的空间。作用为判断的方法一般用“is”开头,而不是if

永远没有完美的编译器,即使是xcode 也是一样,在使用xcode 时也会遇上各种各样莫名其妙的系统错误,需要非常耐心的解决。


在实际开发中,不同的模块由不同的人员编写,不同的模块包含不同的类,因此,实际开发就是通过组合不同的模块来完成项目。

因此,文件名也要描述出这个类的信息,类名是什么,文件名就是什么。要一模一样。

只要继承了NSObject,都要import foundation 框架的头文件。

。m文件是源文件,CC -C 是生成二进制。o文件,编译过程就是检测是否有语法错误,如果没有就生成。o文件。

CC 。o -framework Foundation 是把二进制。o文件进行链接,生成可执行文件,可执行文件必须有程序入口,即必须有mian函数。这个过程是链接。

编译文件时必须包含相关函数的声明的头文件才能编译成功。

在实际项目中会有非常多的文件,在xcode中会编译每一个文件。因此每一个文件都会编译为。o文件,然后再把所有。0文件链接生成可执行文件

import表示把某个文件中的所有内容包含进来,函数可以声明多次,但只能定义一次,否则就是重复定义,编译出错。

所以在xcode中,会把函数声明和函数定义完全分开,通过系统来管理一个工程中的所有文件,因此在项目中,如果某个文件需要包含另外一个文件,只需要import相对于的。h文件即可。声明文件中的内容包括属性声明和方法声明。

用到什么就包含什么,没用到的不用包含,即同一个文件的。h和。m文件所包含的头文件不一定要全部相同。

h和m文件名相同只是为了方便阅读,实际上不同名也可以,只要包含正确即可。

。h文件其实也相当于一个API,在。h文件中可以知道有什么方法和什么属性,怎么传入参数,返回什么值,方法的功能如何实现在。m文件中,在使用他人编写的类时不需要知道实际是如何实现的,只需要知道如何使用就可以了。这就是API。

在项目开发中,实际上需要的是把所有。o文件合并在一起,这样只要有一个main函数就可以正常执行。
































































评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值