1.import和include区别 2.NSLog 和printf区别 3.创建对象做的事情 4. 类和对象方法比较 5 匿名对象优缺点 6. 封装 7.作用域范围 8.id和instancetype 9.自定义构造方法规范 10.nil和Nil及NULL、NSNull区别
1.import和include的区别;
import可以防止头文件的重复包含
2.NSLog 和printf的区别:
1,NSLog可以自动换行, 输出调试信息, printf不能.
2,NSLog 函数的参数是一个NSString 对象
3,printf函数的参数是一个字符串常量指针
3.当创建一个对象的时候:Person *p1 = [Person new],做了三件事情:
1,申请堆内存空间;
2,给实例变量初始化;
3,返回所申请空间的首地址;
4. 类方法和对象方法的比较
1. 对象方法以减号开头, 可以使用成员变量
2.类方法以加号开头,不能使用成员变量
5 匿名对象优缺点 :
优点: 可以简化代码,方便方法调用;节省内存空间
缺点: 匿名对象实例化以后,只能正确的使用一次成员变量;
6. 什么是封装:
1. 封装是指隐藏对象的属性和实现细节,仅对外提供公共访问方式
封装的好处:
1. 将变化隔离。(不管里面怎么变,使用者不需要知道)
2. 便于使用。(使用者只需按照一定的方法使用就可以了)
3. 提高重用性。(任何人都可以对已封装好的功能进行操作)
4. 提高安全性。(由于暴露给使用者的只是一些外在的操作环节,而不是里面本质的东西,所以就提高了对他的维护性,也就是安全性)
7.作用域范围:
@public : 作用于所有的类
@protected: 作用于当前类,子类(派生类)
@private: 作用于当前类
@package: 作用框架级别的
8.id和instancetype类型区别:
1. id和instancetype都可以用来作为方法的返回值
2. id可以用来定义类型,instancetype不能用来定义类型
3. instancetype可以精确返回值类型
9.自定义构造方法的规范
(1)一定是对象方法,以减号开头
(2)返回值一般是id类型或者instancetype类型
(3)方法名一般以initWith开头
10.nil和Nil及NULL、NSNull的区别:
nil: 是一个对象值;如果我们要把一个对象设置为空的时候就用nil;
A null pointer to an Objective-C object. ( #define nil ((id)0) )
Nil :是一个类对象的值,如果我们要把一个Class类型的对象设置为空的时候就用Nil ; A null pointer to an Objective-C class.
NULL 是一个通用指针;A null pointer to anything else. ( #define NULL ((void *)0) )
NSNull 是一个对象,它用在不能使用nil的场合;A class defines a singleton object used to represent null values in collection objects
(which don't allow nil values).
[NSNull null]: The singleton instance of NSNull.
[NSNull null]是一个对象,他用在不能使用nil的场合。
1.import和include区别 2.NSLog 和printf区别 3.创建对象做的事情 4. 类和对象方法比较 5 匿名对象优缺点 6. 封装 7.作用域范围 8.id和instancetype 9.自定义构造方法规范 10.nil和Nil及NULL、NSNull区别的更多相关文章
- JAVA笔记2__类/封闭性/构造方法/方法的重载/匿名对象
public class Main { public static void main(String[] args) { Chicken c1 = new Chicken(); Chicken c2 ...
- OC中自定义构造方法
格式 -(instancetype)init(){ self=[super init] if(self){ } return self; } 自定义构造方法规范 1)一定是对象方法,以减号开头 2)返 ...
- OC 类方法,对象方法,构造方法以及instancetype和id的异同
OC 类方法,对象方法,构造方法以及instancetype和id的异同 类方法: 类方法是可以直接使用类的引用,不需要实例化就可以直接使用的方法.一般写一些工具方法. 类方法: 声明和实现的时候,以 ...
- 2017.10.23 Java 面向对象深入学习---final 关键字、static关键字、匿名对象等
今日内容介绍 1.final 关键字 2.static 关键字 3.匿名对象 4.内部类 5.包的声明与访问 6.访问修饰符 7.代码块 第一节课 01(面向对象)final关键字概念.avi 02: ...
- #import和#include的区别 关键字@class的作用
一.#import和#include的区别当我们在代码中使用两次#include的时候会报错:因为#include相当于拷贝头文件中的声明内容,所以会报重复定义的错误但是使用两次#import的话,不 ...
- 六.OC基础--1. id和instancetype类型,2.动态类型检测,3.响应方法,构造方法,4.重写构造方法,5.自定义构造方法
1. id和instancetype类型, id和instancetype类型区别: 1. id和instancetype都可以用来作为方法的返回值 2. id可以用来定义类型,instancetyp ...
- #import、#include以及@class的区别
一.#import和#include的区别 当我们在代码中使用两次#include的时候会报错:因为#include相当于拷贝头文件中的声明内容,所以会报重复定义的错误 但是使用两次#import的话 ...
- IOS开发之----#import、#include和@class的区别
1. 一般来说,导入objective c的头文件时用#import,包含c/c++头文件时用#include. 2. #import 确定一个文件只能被导入一次,这使你在递归包含中不会出现问题.&l ...
- #import、#include、#import<>和#import””的区别
一.#import与#include #import不会引起交叉编译的问题.因为在Objective-C中会存在C/C++和Object-C混编的问题,如果用#include引入头文件,会导致交叉编译 ...
随机推荐
- shell if判断总结
一.if的基本语法: if [ command ];then 符合该条件执行的语句 elif [ command ];then 符合该条件执行的语句 else 符合该条件执行的语句 ...
- [Go]指针操作
指针类型比较常见 type Dog struct { name string } func (dog *Dog) SetName (name string){ dog.name = name } 对于 ...
- 【转】关于大型网站技术演进的思考(十三)--网站静态化处理—CSI(5)
讲完了SSI,ESI,下面就要讲讲CSI了 ,CSI是浏览器端的动静整合方案,当我文章发表后有朋友就问我,CSI技术是不是就是通过ajax来加载数据啊,我当时的回答只是说你的理解有点片面,那么到底什么 ...
- POJ 2420 A Star not a Tree?【爬山法】
题目大意:在二维平面上找出一个点,使它到所有给定点的距离和最小,距离定义为欧氏距离,求这个最小的距离和是多少(结果需要四舍五入)? 思路:如果不能加点,问所有点距离和的最小值那就是经典的MST,如果只 ...
- private、protected和public的区别
private 是完全私有的,只有当前类中的成员能访问到. protected 是受保护的,只有当前类的成员与继承该类的类才能访问. 这两个是访问类中成员权限的限制符.在类外如果想使用类中的成员,只能 ...
- Linux(1):基本配置
linux里面的网络(网卡)配置: 1. 输出 setup 命令进行设置 2. 选择 "Network configuration" ,按 回车键 3. 选择 "Devi ...
- IText 生成pdf,处理table cell列跨页缺失的问题
/** * 创建(table)PDF,处理cell 跨页处理 * @param savePath(需要保存的pdf路径) * @param pmbs (数据库查询的数据) ...
- 如何判断一个app是原生app还是 webapp,或者是混合app
1.(快速)滚动起来是否比较卡2.图片加载失败的图标 断网检查不是绝对的,web app并不一定是在远程服务器上的, 也能pack在程序里,load本地的资源也能算是web app. web ...
- 异步SOCKET分包和组包的一种通用算法
unit uPackage;// 应用协议// cxg 2016-9-23// 包=包头+包体 interface uses SysUtils, Classes, PeachCtrl.Net.Iocp ...
- 学习Android从青铜到王者之第一天
1.Android四层架构 一.Linux Kernel 二.Libraries和Android Runtime 三.Application Framework 四.Applications 一.Li ...