黑马程序员技术交流社区

标题: 每日一更 oc基础笔记 [打印本页]

作者: 代战    时间: 2015-12-8 08:07
标题: 每日一更 oc基础笔记
/*内存分区
内存分为五个区:
栈区:存放局部变量临时变量
堆区:程序运行时动态分配的内存,对象
静态区(全局区 bss):存放为初始化的全局变量 静态变量
常量区:(数据段)已经初始化的全局变量 静态变量 常量
代码段:源程序 源代码 运行产生的二进制数据
*/




/*
1.oc是谁创建的?
oc 主要由 stepson 公司的布莱德.考克斯(brad cox)和 Tom love 在1981年发明的

1988 年 乔布斯 的next 公司 买下语言授权
1996 年 成为苹果公司的御用开发语言
2.oc可以开发什么应用?
oc 的作用  既能开发 Mac os 应用 也能开发 iOS 应用


oc 与  c 的关系

1.oc 完全兼容c
2.任何c语言程序 都可以直接通过 oc 编译器 编译
3.oc中完全使用 c 语言也是合法的
4.c中不能写oc 代码 oc可以写c 的代码

*/

1.oc可不可不编译直接运行?

    不可以  oc 是高级语言 不能直接运行
2.oc程序编译过程是什么?

    编写---编译----链接重编译----运行
3.oc文件以什么结尾?
      .m

4.oc基本语法与什么语言大体相同?
  与c语言

5.oc兼容什么语言?
    c语言
6.c兼容oc语言对吗?
不对

7.oc中#import和c中的#include的区别?

#import实质上就是添加了预处理指令防止文件循环引用和重复包含的#include
#include<stdio.h>
#import<Foundation/Foundation.h>
#ifndef Fda_h
#define Fda_h
#include<Foundation/Foundation.h>
#end

8.@的作用

@是c的一个字符串 转换成oc中的字符串

9.NSLog使用前必须#import什么?
import<Foundation/Foundation.h>

10.oc字符串与c语言字符串有什么区别?

oc 字符串用%@打印 字符串前面必须加@ 而c语言则不需要 打印则是用%s

11.用了oc框架,则手动编译代码的时候要注意什么问题?

-framew Foundation

12.框架import 引入的时候为什么一般引入的是主头文件?
因为oc的头文件都包含在主头文件中

//13.NSLog对比print 有什么不同?
//1.NSLog可以自动换行 printf 不可以
//2.NSLog可以自动输出时间等项目信息 而printf不会
//3.NSLog函数的参数是一个 NSString对象 printf是一个字符串常量指针

14.BOOL是什么?

是一种数据类型 用于输出 YES NO

15.有什么用?


16.底层实现用了什么?
宏定义 和预处理指令

#if__has_feature(objc_bool)
#define YES __objc_yes
#define NO __objc_no
#else
#define YES ((BOOL)1)
#define NO ((BOOL)0)
#endif

17.面对对象编程的核心是什么?
通过某些具有特定特性/功能的对象来达到程序需要实现的效果
原则是:  没有合适的对象要创建对象

//18.什么叫面向对象?
//面向对象是一种解决问题或处理事情的思想
//可以讲复杂的事情简单化 将程序开发者从执行者转换成指挥者,
//讲要完成的事情交给对象来完成

19.面向对象有什么好处?
可以将复杂的事情简单化 也可以重复利用

//20.面向对象与面向过程有什么不同?


20.什么是类?
类就是一类事物的抽象描述
21.什么是对象?
根据对应的类创建的实体
22.对象与类有什么关系?
对象是根据类创建的


23.要定义一个类包含那两部分?
类的声明
@interface
@end
类方法的实现
@implementation
@end

24.一个类的声明里可以定义方法的实现吗?
不可以

25.一个类的实现。里面主要做什么实现?
方法的实现

/*内存分区
内存分为五个区:
栈区:存放局部变量临时变量
堆区:程序运行时动态分配的内存,对象
静态区(全局区 bss):存放为初始化的全局变量 静态变量
常量区:(数据段)已经初始化的全局变量 静态变量 常量
代码段:源程序 源代码 运行产生的二进制数据
*/


26.如何创建一个类的对象?
类名 * 对象名 = [类名 new];

27.对象用什么表示?
指针

28.对象的指针中存的是什么?
对象在内存中栈区的地址

29.对象如何调用属性?
对象名->属性名;

30.对象如何调用方法?
[对象名 方法名:参数];

//new 对象方法的步骤
//1.在内存的堆区开辟一个空间
//使用 alloc
//
//2.将类中的属性赋值为零
//
//3.返回对象的地址
//用 init








作者: 15225018025    时间: 2015-12-8 08:28
黑马双元  赞一个!!!!!!!!!!!!!!!!
作者: ZXY66452    时间: 2015-12-8 21:32
学习了~~~!1~~~
作者: 独孤求傲    时间: 2015-12-8 21:49
我也在学oc,感觉刚开始思维挺重要的
作者: 后知后觉4778    时间: 2015-12-8 22:08
OC笔记记的漂亮,学习了!!!
作者: 核酸的双链    时间: 2015-12-9 00:34
赞赞赞,坚持下去




欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/) 黑马程序员IT技术论坛 X3.2