iOS 开发
文章平均质量分 58
J_Knight
iOS开发|上海
展开
-
使用Block实现KVO
在iOS开发中,我们可以通过KVO机制来监听某个对象的某个属性的变化。用过KVO的同学都应该知道,KVO的回调是以代理的形式实现的:在给某个对象添加观察以后,需要在另外一个地方实现回调代理方法。这种设计给人感觉比较分散,因此突然想试试用Block来实现KVO,将添加观察的代码和回调处理的代码写在一起。在学习了ImplementKVO的实现以后,自己也写了一个:SJKVOControllerSJKVO原创 2017-05-15 08:56:32 · 3018 阅读 · 0 评论 -
[iOS开发项目-5] 图片浏览器
本项目是取自传智播客的教学项目,加入笔者的修改和润饰。1. 项目名称:图片浏览器2. 项目截图展示3. 项目功能点击左右按钮浏览图片,更新序号,图片,描述内容。图片一共五张:显示第一张图片的时候,左边的按钮失效;显示最后一张按钮的时候,右边的按钮失效。4. 项目代码#import "ViewController.h"@interface ViewController ()@property原创 2015-09-29 11:14:15 · 807 阅读 · 0 评论 -
[iOS开发项目-3] 按钮控件的移动,放大缩小,左右旋转操作
本项目是取自传智播客的教学项目,加入笔者的修改和润饰。1. 项目名称:按钮操作2. 项目截图展示3. 项目功能点击按钮,切换按钮状态上下左右移动按钮放大,缩小按钮左右旋转按钮4. 项目代码#import "ViewController.h"//设置按钮移动速度#define KMovingDelta 20//设置按钮标签枚举值typedef enum{ kMovingDirTo原创 2015-09-27 23:39:11 · 1031 阅读 · 0 评论 -
[iOS开发项目-2] 用户登录界面
本项目是取自传智播客的教学项目,加入笔者的修改和润饰。1. 项目名称:用户登录项目功能:能够输入用户名和密码点击按钮后输出用户名和密码细节功能: 刚进入界面即打开键盘输入用户名后点击return键,光标自动跳到密码输入框中输入密码后点击return键,直接调用登录方法并关闭键盘2. 项目截图展示3. 代码#import "ViewController.h"@interface Vie原创 2015-09-27 00:59:20 · 992 阅读 · 0 评论 -
[iOS开发项目-1] 加法计算器
时隔一个月没写博客了,这段时间由于杂事繁多,没有及时整理好学习内容。现在就将笔者在这段时间里学习的iOS项目和iOS面试有关的题目整理出来呈现给大家。本项目是取自传智播客的教学项目,加入笔者的修改和润饰。1. 项目名称:加法计算器2. 项目截图展示3. 代码#import "ViewController.h"@interface ViewController ()@property (nonato原创 2015-09-26 23:26:32 · 582 阅读 · 0 评论 -
[学习笔记—Objective-C]《Objective-C-基础教程 第2版》第二章~第七章
在看完《Objective-C 程序设计 第6版》之后,看了一些关于iOS开发职位的面试题,发现自身基础很是不牢,于是打算以查缺补漏的方式阅读另一本关于Objective-C的基础书籍:《Objective-C-基础教程 第2版》。 本套学习笔记主要只是记录《Objective-C 程序设计 第6版》中未提到的知识点,因此看上去内容不是很完整。第二章 对c的扩展2.1 import语句Objec原创 2015-07-22 18:52:47 · 1116 阅读 · 0 评论 -
[学习笔记—Objective-C]《Objective-C-基础教程 第2版》第十二章 类别
12.1 创建类别类别(category)是一种为现有的类添加新方法的方式例:获取字符串的长度并存入NSDictionary字典中不使用类别的方式: NSNumber *number; number = [NSNumber numberWithUnsignedInt: [string length]]; // ... do something with numb原创 2015-08-02 02:49:36 · 1008 阅读 · 0 评论 -
[学习笔记—Objective-C]《Objective-C-基础教程 第2版》第十一章 属性
11.1 使用属性值@property float rainHandling;//表明此类具有float类型的属性,其名称为rainHandling注意:属性的名称不必与实例变量名称相同。@synthesize rainHandling;//表示创建了该属性的访问代码注意:使用属性后,可以不声明实例变量,编译器会声明。有两个地方可以添加实例变量声明:头文件:让子类直接通过属性访问变量实现文原创 2015-07-31 01:20:44 · 934 阅读 · 0 评论 -
[学习笔记—Objective-C]《Objective-C-基础教程 第2版》第十章 对象初始化
10.1 分配对象向某个类发送alloc消息,能为类分配一块足够大的内存用来存放该类的全部实例变量,同时alloc还将这块内存区域全部初始化为0.刚分配的对象并不能立即使用,需要先初始化。初始化:从操作系统取得一块内存存储对象。 init方法返回其正在初始化的对象10.11 初始化对象注意:初始化方法返回的对象跟分配的对象可能不同。例:字符串初始化函数可能会决定创建一个不同类的对象。10.12 编原创 2015-07-30 03:25:33 · 1231 阅读 · 0 评论 -
[学习笔记—Objective-C]《Objective-C-基础教程 第2版》第十三章 协议
13.1 协议正式协议:包含了方法和属性的有名称列表。注意:采用协议后,类就要实现该协议的所有方法。通常情况下,一个协议只有少数几个需要实现的方法.在协议中,不会引用新的实例变量。13.11 声明协议NSCopying 协议@protocol NSCopying- (id) copyWithZone: (NSZone *) zone;@end//如果采用了NSCopying协议,你原创 2015-08-11 20:29:36 · 993 阅读 · 0 评论 -
[iOS开发项目-11] 英雄列表
本项目是取自传智播客的教学项目,加入笔者的修改和润饰。1. 项目名称:英雄列表2. 项目截图展示3. 项目功能单纯显示英雄数据4. 项目代码VC.m#import "ViewController.h"#import "SJHero.h"@interface ViewController ()<UITableViewDataSource,UITableViewDelegate>@property原创 2015-11-07 22:58:42 · 901 阅读 · 6 评论 -
[iOS开发项目-10] 图片轮播器
本项目是取自传智播客的教学项目,加入笔者的修改和润饰。1. 项目名称:图片轮播器2. 项目截图展示3. 项目功能打开程序实现图片自动滚动。能够左右拖动图片,能静止图片滚动。3. 项目代码#import "ViewController.h"#define kImageCount 5@interface ViewController () <UIScrollViewDelegate>@proper原创 2015-10-11 16:25:55 · 989 阅读 · 0 评论 -
[iOS开发项目-9] 倒计时时钟
本项目是取自传智播客的教学项目,加入笔者的修改和润饰。1. 项目名称:倒计时时钟2. 项目截图展示3. 项目功能点击播放按钮,倒计时开始。点击暂停按钮,倒计时暂停。再点击播放按钮,倒计时继续。倒计时时钟运行时,可以滚动textView的滚动条。3. 项目代码#import "ViewController.h"@interface ViewController ()@property (non原创 2015-10-08 14:47:36 · 1053 阅读 · 0 评论 -
《Objective-C 高级编程》干货三部曲(三):GCD篇
我们知道在iOS开发中,一共有四种多线程技术:pthread,NSThread,GCD,NSOperation: - 前两者是面向线程开发的多线程技术,需要开发者自己去维护线程的生命周期,比较繁琐。 - 后两者是面向队列开发的多线程技术,开发者仅仅定义想执行的任务追加到适当的Dispatch Queue(队列)中并设置一些优先级,依赖等操作就可以了,其他的事情可以交给系统来做。在这一章里,作者主原创 2017-04-24 09:52:48 · 3001 阅读 · 0 评论 -
基于MVVM,用于快速搭建设置页,个人信息页的框架
写一个小小轮子~写UITableView的时候,我们经常遇到的是完全依赖于网络请求,需要自定义的动态cell的需求(比如微博帖子列表)。但是同时,大多数app里面几乎也都有设置页,个人页等其他以静态表格为主的页面。而且这些页面的共性比较多: 1. 大多数情况下在进入页面之前就已经拿到所有数据。 2. cell样式单一,自定义cell出现的几率比较小(几乎都是高度为44的cell)。 3. 多数都分组。原创 2017-03-23 08:33:42 · 2782 阅读 · 1 评论 -
《Objective-C 高级编程》干货三部曲(二):Blocks篇
这一章讲解了Block相关的知识。因为作者将Objective-C的代码转成了C++的代码,所以第一次看的时候非常吃力,我自己也不记得看了多少遍了。这篇总结不仅仅只有这本书中的内容,还有一点在其他博客里看过的Block的相关知识,并加上了自己的理解,而且文章结构也和原书不太一致,是经过我的整理重新排列出来的。原创 2017-04-17 08:55:58 · 3537 阅读 · 0 评论 -
《Objective-C 高级编程》干货三部曲(一):引用计数篇
总结了Effective Objective-C之后,还想读一本进阶的iOS书,毫不犹豫选中了《Objective-C 高级编程》:这本书有三个章节,我针对每一章节进行总结并加上适当的扩展分享给大家。原创 2017-04-10 08:52:24 · 4791 阅读 · 3 评论 -
[iOS开发项目-8] 查看大图
本项目是取自传智播客的教学项目,加入笔者的修改和润饰。1. 项目名称:查看大图2. 项目截图展示3. 项目功能左右滑动查看图片支持缩放功能点击中间按钮移动图片3. 项目代码#import "ViewController.h"@interface ViewController ()<UIScrollViewDelegate>@property (strong, nonatomic) IBOut原创 2015-10-07 00:12:08 · 707 阅读 · 0 评论 -
[iOS开发项目-4] 汤姆猫(只包含动作,没有发声功能)
本项目是取自传智播客的教学项目,加入笔者的修改和润饰。1. 项目名称:汤姆猫2. 项目截图展示3. 项目功能点击特定按钮,播放动画3. 项目代码#import "ViewController.h"@interface ViewController ()@property (weak, nonatomic) IBOutlet UIImageView *tom;@end@implementatio原创 2015-09-28 00:25:35 · 1245 阅读 · 0 评论 -
[iOS开发项目-6] 应用程序管理
本项目是取自传智播客的教学项目,加入笔者的修改和润饰。1. 项目名称:应用管理2. 项目截图展示3. 项目功能展示应用图标,名称和下载按钮点击下载按钮,出现“正在下载”图标3. 项目代码模型代码:AppInfo.h#import <Foundation/Foundation.h>#import <UIKit/UIKit.h>@interface AppInfo : NSObject@pr原创 2015-10-02 18:26:45 · 608 阅读 · 0 评论 -
[iOS开发项目-7] 超级猜图
本项目是取自传智播客的教学项目,加入笔者的修改和润饰。1. 项目名称:超级猜图2. 项目截图展示3. 项目功能点击图片或“大图”按钮,图片放大;再点击图片或点击周围区域,图片复原。点击备选按钮,相应字填入答案区按钮。按“下一题”按钮或答案正确:进入下一题。点击答案区某按钮,相应字回到备选区原来位置。点击“帮助按钮”会清空答案区按钮,并提示正确答案的第一个字。答案正确或错误都有相应的扣分和原创 2015-10-06 23:21:59 · 1089 阅读 · 0 评论 -
[iOS开发项目-8] 喜马拉雅电台
本项目是取自传智播客的教学项目,加入笔者的修改和润饰。1. 项目名称:喜马拉雅电台2. 项目截图展示3. 项目功能单纯的显示和滚动功能3. 项目代码#import "ViewController.h"@interface ViewController ()@property (weak, nonatomic) IBOutlet UIScrollView *scrollView;@property原创 2015-10-07 00:49:46 · 1288 阅读 · 0 评论 -
[学习笔记—Objective-C]《Objective-C-基础教程 第2版》第九章 内存管理
内存管理:确保在需要的时候分配内存,在程序运行结束时释放占用的内存如果只分配内存而不释放内存,则会发生内存泄漏(leak memory),程序的内存占用量不断增加,最终会被耗尽并导致程序崩溃。不要使用任何刚释放的内存,否则可能误用陈旧的数据,如果内存已经加载了其他数据,将会破坏这些新数据。9.1 对象生命周期对象的生命周期:诞生:通过alloc或new方法实现 生存:接受消息并执行操作原创 2015-07-28 06:27:45 · 924 阅读 · 0 评论 -
[学习笔记—Objective-C]《Objective-C 程序设计 第6版》第三章 类,对象和方法
本人于2015年6月10日开始自学ios开发。 此学习笔记是本人在学习《Objective-C 程序设计 第六版》的过程中,经本人修改,整理的内容。略过第一,二章,从第三章有关类的概念开始。类,对象,方法的概念及相互关系@interface,@implementation,@program三部分Part 1. 类,对象,方法的概念及相互关系类: 具有归纳性,抽象意义原创 2015-06-25 01:11:03 · 743 阅读 · 0 评论 -
[学习笔记—算法] 计算整数各位上数字的和
题目:计算整数各位上数字的和代码 [Objective-C]: int number, right_digit, sum; NSLog(@"Enter your number:"); scanf("%i", &number); sum = 0; //初始化各位数字的和 do { right_digit原创 2015-06-30 21:07:05 · 909 阅读 · 0 评论 -
[学习笔记—Objective-C]《Objective-C 程序设计 第6版》第三章 类,对象和方法 课后题解析 3-7
第三章的课后题多半都比较主观,在此只分享第七题。第七题几乎囊括了第三章左右的知识点,非常典型。以下是题目和本人编写的代码。为了方便起见,将头文件,实现文件,主函数文件合并到了一起。 3-7 定义一个名为XYPoint的类,用来保存笛卡尔坐标(x,y),其中x和y均为整数。定义一些方法,分别用来设置点的坐标x和y,并检查他们的值。编写一个Objective-C程序,实现这个新类并测试它。#impo原创 2015-06-25 11:53:17 · 1559 阅读 · 0 评论 -
[学习笔记—Objective-C]《Objective-C 程序设计 第6版》第四章 数据类型和表达式
本章内容相对比较基础,容易理解。过于简单繁琐的内容在此不再赘述。这里只讲解本章的框架和比较重要的细节部分。Part1. 数据类型和常量基本数据类型int: 值域和运行计算机的硬件设置有关NSLog转化字符:%ifloat: 存储包含小数位的值科学技术法表示1700:1.7e4NSLog转化字符:%f或者%gdouble: 与float类型非常相似double的变原创 2015-06-27 18:15:33 · 829 阅读 · 0 评论 -
[学习笔记—Objective-C]《Objective-C 程序设计 第6版》第五章 循环结构 部分例题&课后题讲解
本章相对比较简单,知识点就不在赘述。主要就书中的例题和课后题进行说明。if 结构if 基本结构for ( int_expression; loop_condition; loop_expression ) program statementendif 结构变体for (i = 0, j = 0; i < 10; ++i);for (i = 0, j = 100; i < 10; ++i, j原创 2015-06-28 15:25:56 · 1191 阅读 · 0 评论 -
[学习笔记—Objective-C]《Objective-C 程序设计 第6版》第六章 选择结构 课后题6-4&6-6&6-7
本篇讲解第六章的课后题,6-4,6,7。代码皆为课后题 6-4题目: 编写一个简单的打印计算器,允许用户输入以下形式的表达式number operator代码:#import <Foundation/Foundation.h>@interface Calculator : NSObject//累加器方法-(void) setAccumulator: (double) value;-(void)原创 2015-06-28 18:56:47 · 1427 阅读 · 0 评论 -
[学习笔记—Objective-C]《Objective-C 程序设计 第6版》第四章 数据类型和表达式 课后练习题 4-10
4-10 题目: 为代码清单 4-6中的Calculator添加一项存储功能。实现以下方法声明并实现它们:-(double) memoryClear; -(double) memoryStore; -(double) memoryRecall; -(double) memoryAdd: (dou原创 2015-06-28 13:42:14 · 1089 阅读 · 0 评论 -
[学习笔记—Objective-C]《Objective-C 程序设计 第6版》第六章 选择结构
跟上一章一样,本章只讲解大体的框架和相对重要的细节知识点。Part 1. if 语句Part1. 1 if 语句结构if (expression1) program statement 1; else if (expression 2) program statement 2;else //也可以写成 else if program statement 3;end原创 2015-06-28 16:18:43 · 754 阅读 · 0 评论 -
[学习笔记—Objective-C]《Objective-C 程序设计 第6版》第十二章 预处理程序
Part 1. #define语句#define语句的基本用途之一是给符号名称指定程序常量。类似于文本编辑器中的搜索和替换。优点记忆成本低:不必特意记住常量的值更改便携性:只需在一个地方更改常量的值加强程序的可扩展性:定义数组的大小定义的内容1.定义整数#define TRUE 1 // 定义TRUE,并使其等于1。gameover = TRUE // 将1赋给gameover。2.定原创 2015-07-07 15:24:22 · 870 阅读 · 0 评论 -
[学习笔记—算法] 正序 & 倒序 提取整数各位上的数字
题目: 让用户输入一个整数,正序&倒序提取整数各位上的数字。代码 [Objective-C]: int i,j,number_0,number,counter_0,counter,ten; int right_digit, left_digit; counter = 0; //初始化位数 NSLog(@"Enter your number原创 2015-06-30 21:26:59 · 1459 阅读 · 0 评论 -
[学习笔记—Objective-C]《Objective-C 程序设计 第6版》开始
本人于2015年6月10日开始了自学ios开发之旅。刚开始学习的时候,看了斯坦福大学公开课:iOS 7应用开发的第一讲,但是由于本人基础不够多(只有C语言基础,无面向对象基础),于是打算从这本 《Objective-C 程序设计 (第6版)》开始慢慢学起。当初给自己定下了1个月搞定这本书的计划,然后再阅读+实践的办法搞定《 iOS开发指南:从零基础到App Store上架(第3版)》。到现在为止两周原创 2015-06-25 09:05:33 · 804 阅读 · 0 评论 -
[学习笔记—Objective-C]《Objective-C 程序设计 第6版》第十五章 数字 字符串和集合
Part 1. 数字对象基本的数据类型不是对象,因此不能给他们发信息。但是有的时候需要将这些值作为对象使用:NSArry创建的数组存储的值必须是对象,因此数据类型无法直接存储到数组中,需要NSNumber类,依据数据的类型创建对象。NSNumber类:每种基本数据类型,类方法都能为它创建一个NSNumber对象。 NSNumber *myNumber, *floatNumber,原创 2015-07-08 23:11:35 · 1219 阅读 · 0 评论 -
[学习笔记—Objective-C]《Objective-C 程序设计 第6版》第十一章 分类和协议
Part 1. 分类分类提供了一种简单的方式,用它可以将类的定义模块化到相关方法的组成分类中。还提供了扩展现有类定义的简便方式。原始Fraction类的接口部分#import <Foundation/Foundationh>@interface Fraction : NSObject@property int numerator, denominator;-(void) setTo: (int) n原创 2015-07-06 22:33:58 · 636 阅读 · 0 评论 -
[学习笔记—Objective-C]《Objective-C 程序设计 第6版》第十章 变量和数据类型
Part 1. 实例变量和属性目前的趋势是使用(_)作为实例变量名字的起始字符。在实现部分显式声明实例变量是私有的 因此不能在子类中通过名字直接获取到实例变量的值。在子类中只能通过继承的存取方法获取实例变量的值。不必用@synthesize指令生成存取方法,只要在属性中声明即可。Part 2. 全局变量小写的g作为全局变量的首字母:int gMoveNumber = 1;,也是外部变量原创 2015-07-06 00:28:57 · 1358 阅读 · 0 评论 -
[学习笔记—Objective-C]《Objective-C 程序设计 第6版》第九章 多态,动态类型和动态绑定
Part 1. 多态:相同的名称,不同的类多态:使不同的类共享相同方法名称的能力称为多态。(可以开发一组可以相应相同方法名的类) //两个分数 Fraction *f1 = [[Fraction alloc] init]; Fraction *f2 = [[Fraction alloc] init]; Fraction原创 2015-07-06 00:21:24 · 717 阅读 · 0 评论 -
[学习笔记—Objective-C]《Objective-C-基础教程 第2版》第八章 Foudation Kit 介绍
本学习笔记是对《Objective—C 程序设计 第六版》第十五章关于Foundation框架内容的查缺补漏,因此内容看上去不是很完整。8.1~8.2 略8.3 一些有用的数据类型8.31 范围结构体NSRange:表示字符串里的字符范围或者数组里的元素范围。typedef struct _NSRange{ unsigned int location; unsigned int l原创 2015-07-27 14:08:06 · 635 阅读 · 0 评论 -
[学习笔记—Objective-C]《Objective-C 程序设计 第6版》第十八章 复制对象
origin = pt; 将对象pt的地址复制到origin中。两个变量都指向内存中同一个地址Foundation对象:将一个变量赋值给另一个对象仅仅创建了另一个对这个对象的引用(地址)。Part 1.copy 和 mutablecopy 方法:创建对象的副本复制对象(的引用) dataArray2 = dataArray;//创建了内存中同一数组对象的另一个引用:总共一个数组创建对象的副原创 2015-07-10 22:21:07 · 811 阅读 · 0 评论