-
0420
-
Objective-C
-
day01
-
OC基本语法
- #import指令
- 引入库函数的指令
- 是 #include增强版
- 利用预编译指令防止头文件的重复包含
- #ifndef #define
- #endif
- 利用#import ,即使不用预编译指令,也可以防止头文件的重复包含
- 同其他预编译指令一样,如#define 宏定义将字符串替换,这个import是将代码拷贝到该文件中
- 同一个文件,无论用import 包含多少次,都会只当做一次
- #include指令单独使用,可能会造成重复包含,要适用预编译命令防止
- 引入库函数的操作
- #import <stdio.h>
- 尖引号 引用系统文件
- 文件搜索顺序
- 编译器文件夹-》系统文件夹-》查找失败
- #import "aaa.h"
- 双引号 引用用户文件
- 文件搜索顺序
- 当前文件夹 -》编译器文件夹-》系统文件夹-》查找失败
- 框架的概念
- 将事先准备的功能模块封装在一个个类中,这些类的集合叫框架
- 类似C语言中的函数库
- Foundation框架
- 提供了OC最基础的功能
- autoreleasepool框架
- 自动释放池
-
OC完成学习路线
- OC概述
- OC中的面向对象特性
- OC中的面向对象
- 内存管理
- OC中类目,协议,延展,委托模型
- Blocks
- Foundation框架介绍
- 文件操作
- 复制
- 对象归档
- KVC/KVO
-
NSLog函数的使用
- NSLog是printf的增强版
- 简单的字符串
- NSString *str =@"你好你好";
- // str 是变量名,变量名中保存的是字符串地址
- NSLog(@"str ===== %p",str);
- 打印出来的是地址
- NSLog(@"str ===== %@\n",str);
- 打印出来的实际的字符串
- 除了上面用变量进行打印外,还能直接这样打印常量
- NSLog(@"我要打印的是 %@",@"你好你好")
- NS前缀
- 没有命名空间的概念,OC中类名必须全局唯一
- 不同框架中有类似的功能,可能导致类名重复,objectiveC规定类名要有前缀
-
OC中注释及@符号的使用
- @的使用方法
- @“This is OC”
- 将C语言字符串转化为OC字符串
- 标识符
- OC中大部分标识符都以@开头
- OC中注释
- 同C语言
-
访问OC源文件,C源文件的函数
- 1. 创建C文件
- 2.C文件中定义个函数
- 3. C头文件中声明
- extern void testCShow();
- 4. OC代码中引用 import 上述的头文件
- 5. OC代码中可以开始使用
-
OC和C的差异化学习
- 数据类型对比
- C语言
- 基本类型
- 整型
- 字符
- 实型
- 构造
- 数组
- 结构体
- 子主题 3
- 枚举
- 指针
- 空类型void
- 定义类型typedef
- OC中数据类型
- 包含上述C语言类型
- 新增了
- 布尔型BOOL
- BLOCK类型
- 代码块数据类型
- 指针数据类型
- 类class
- id类型
- 动态对象类型
- 特殊类型
- SEL / nil
- 变量定义
- C语言中变量定义,可以直接在OC中使用
- 流程控制语句完全一样
- for
- while
- do while
- if
- switch
- OC中新增异常捕捉
- @try...@catch...@finally
- @try {
//可能出错代码
NSLog(@"try");
} @catch (NSException *exception) {
//一旦出错,将被执行的补救代码
NSLog(@"catch");
} @finally {
//无论出错与否都被执行
NSLog(@"finally");
}
-
面向对象
- 四个主要特征
- 抽象性
- 封装性
- 多态性
- 继承性
-
UI基础
-
day01
-
apple简介
- IOS框架
- UIKit
- 用户界面
- QuartzCore
- 动画特效
- CoreGraphics
- 2D绘制
- MapKit
- 内置地图
- 不要重复造轮子
- AVFoundation
- 音频视频
- 面向对象
-
模拟器
- 熟悉模拟器中常见的操作
- 创建IOS项目
-
Main.storyBoard
- LaunchScreen.storyBoard
- 启动的画面
- 用于搭建用户界面
- 有个AutoLayout概念
- 用于程序在各个版本中保持正常显示
- 如何调整storyBoard的大小
- 按上面的view 圆按钮
- 点击AttributeInspector选择size
- 例如在iphone6中为4.7inch
-
计算器界面
- 利用 AI的keyboardType,调整Text中的弹出键盘
- 只弹出数字键盘
-
ViewController与View的关系
- 代码写在viewController中
- 作用是管理视图
- ViewController中有个view
- 可以从storyBoard中看出
- 也可以从ViewController的头文件代码中看出
- View与ViewController两个类本身是没有关系的
- View用来管理一起能看到的组件
- 分别继承于UIView 和 UIViewController
- UIViewController中有个类型为UIView的对象
- 另外,应用程序入口在 supportFile中的main.m
-
将按钮与方法连接
- 事先定义方法
- - (IBAction)doSomething {
NSLog(@"have fun");
}
- 连接方法
- 方法1
- 按下键盘的control键,将button拖向ViewController,会弹出方法,选择连接
- 方法2
- 点击button后右键,将touchupinside选择
- 指向头文件h文件的dosomething函数
-
解决键盘的问题
- 有时候在模拟器上键盘显示不出来
- 点击菜单上的Hardware选择
-
方法连接时的问题
- 1,如果在代码中删除了一个方法,一定要将对应的连接也删除
- 在删除方法代码时,确认是否有对应的连接在使用
- 否则出现运行时错误
- 2,如果一个方法只需要点击按钮触发,不需要其他地方调用
- 只需要在.m文件中实现
- 不需要.h文件中声明
-
控件连线
- 目标 将Text中的文字,连接到代码的变量中
- 对于只需要在ViewController中使用的控件(属性),我们一般声明在类扩展中
- UI控件都使用weak,因为UI控件需要连线,也需要添加标示IBOutlet
- 然后再用拖动拉线的方式,实现连接
- 另外,不用实现定义属性,而是直接将控件 按着control连线拖到类扩展中,会弹出信息框选择后,会自动生成一个属性
-
回收键盘值
- NSLog(@"%@",self.filed1.text);
- 将文本框中的文字在控制台中显示出来
- 将Text中的值取出,并转化为int
- int number1 = [self.filed1.text intValue];
- 将计算结果int值,转为String显示在Lable
- self.sumlable.text = [NSString stringWithFormat:@"%d",sum];
-
收回键盘
- 按下计算按钮后回收焦点
- 方法1
- 找到对应控件,调用方法
- [self.filed1 resignFirstResponder];
- 方法2
- 取消控制器view的编辑状态
- [self.view endEditing:YES];
-
UIKit的坐标系
- 通过调整控件的显示坐标
- 精确控制控件的位置
-
view的常见属性
- UI界面上,看到的所有东西都是UIView
- 所有控件都直接或间接继承于UIView
- UIView是一个容器里面可以添加其他控件
- 可以通过UIView来制作一些最纯粹的界面
- 例子中学习到了两点
- 如何获取父控件
- 如何修改父控件的颜色
- 随机改变父控件的颜色
- 随机颜色的生成
- 另外一种上色的方式
-
使用代码来创建view
- 代码
- UIView *createView = [[UIView alloc]init];
// 生成一个随机颜色
float randomR = arc4random_uniform(255)/255.0;
float randomG = arc4random_uniform(255)/255.0;
float randomB = arc4random_uniform(255)/255.0;
UIColor *randomColor = [UIColor colorWithRed:(randomR) green:(randomG) blue:(randomB) alpha:1];
// 新控件上色
createView.backgroundColor = randomColor;
// 代码修改控件的长宽属性等,大小也是随机的
float x = arc4random_uniform(600);
float y = arc4random_uniform(600);
float width = arc4random_uniform(50);
float height = arc4random_uniform(80);
createView.frame = CGRectMake(x, y, width,height);
// 将新控件,加入到 最外面的白控件中
[self.whiteView addSubview:createView];
- 1.定义一个view
- 2.给这个view添加颜色大小位置等属性
- 注意添加所使用的函数
- 3.将白色的外层view 作为一个变量添加到 m文件中
- 4. 将新控件加入到外层view中
- 打印地址用 %p
- extern的意思
-
0421
-
斯坦福IOS视频
-
概览
-
前提
- 学习过面向对象
- IOS是个完全面向对象的系统
-
IOS 结构
- CocoaTouch
- MultiTouch
- WebView
- Cameraなど跟用户互动的部分
- Media
- Audio
- PDF/JPEG
- Videoなど
- CoreServices
- Collection
- CoreLocation
- FIleAccess
- SQLite
- NetServicesなど
- CoreOS
- OSX Kernel
- FileSysytem
- Socketsなど
-
Swift与OC
- 本质上两语言非常类似
- MVC设计模式
-
UIKit关联
-
UITextField
-
UIControl
-
UIView
- UIView : UIResponder <NSCoding, UIAppearance, UIAppearanceContainer, UIDynamicItem, UITraitEnvironment, UICoordinateSpace, UIFocusEnvironment>
- 上述语法意思是什么