- 博客(84)
- 资源 (2)
- 收藏
- 关注
原创 什么是EXC_BAD_ACCESS以及如何调试
某些时候,你可能会遇到由EXC_BAD_ACCESS引起的崩溃。在这片文章中,你将学会什么是EXC_BAD_ACCESS,以及它是由什么引起的。我也将提出一些解决由EXC_BAD_ACCESS引起的bug的技巧。什么是EXC_BAD_ACCESS?一旦你理解了EXC_BAD_ACCESS的根本原因,你会更好地理解它这个含义模糊的名称。这里有一个简单的解释和一个更加专业的解释。让我们首先以这个简单的解
2015-11-01 20:26:55 20660
原创 Swift Cheat Sheet [2] - Control Flow
If条件语句if elselet number = 100if number < 10 { print("The number is small")} else if number > 100 { print("The number is pretty big")} else { print("The number is between 10 and 100")}i
2015-10-29 09:42:58 623
原创 Swift Cheat Sheet [1] — Basic Types
常量和变量Varibalesvar myInt = 1 //inexplicit typevar myExplicitInt : Int = 1 // explicit typevar x = 1, y = 2, z = 3 //declare multiple integersmyExplicitInt = 3 // set to another integer valueConstant
2015-10-29 09:41:29 759
原创 Markdown为写作而生
学习Markdown知识,纵享写作之乐!写作有什么难题?Markdown是如何解决的?.doc 或 Pages 格式有如下问题:不一定谁都能打开。用 Windows 的人打不开 .pages 文件,用旧版 Word 的人不一定能打开你用新版 Word 写的稿子。对方看到的稿子的样子和你自己看到的可能差别很大。Office 已经是你电脑上唯一的盗版软件,导致心情不佳。使用Markdown有如
2015-10-29 09:39:34 914
原创 Bundle version VS Bundle versions string
今天上传新版本,在修改Bundle version和Bundle versions string的时候突然想到:一直以来都没有深究过这两个字段的真正含义,只是保持它们一样。那么它们真正的用途到底是什么呢?今天来探究一下。区别Bundle Version (CFBundleVersion)Bundle Version是应用程序的内部版本号。Bundle Version不需要是一个纯粹的版本号,它
2015-10-29 09:37:55 1085
原创 浅析UITableViewCell重用机制
UITableView在iOS开发中用的非常的多,由于Cell中一般都会有Image等占用内存的资源,容易引起Memory Warning,所以iOS引入了重用机制。那么今天就对UITableView的重用机制分析一下。
2015-10-28 20:47:50 524
原创 HScrollViewWithTitleAndSlide
功能说明模仿LOFTER发现界面的页面切换效果标题可以随着内容的滚动而滚动下拉展示所有标题以供点选下拉按钮的图片和勾选的图片可以自定义,每页最多显示的标题的个数可以自定义。封装的比较完整,使用起来很简单,几句代码搞定。使用Xcode7.0.1 Objective-CGitHub地址:https://github.com/SharonHu1990/HScrollViewWithTitl
2015-10-28 20:41:58 550
原创 iOS8新功能——Self Sizing Cells和Dynamic Type
Self Sizing Cells在iOS 8中,苹果引入了UITableView的一项新功能--Self Sizing Cells,对于不少开发者来说这是新SDK中一项非常有用的新功能。在iOS 8之前,如果想在表视图中展示可变高度的动态内容时,你需要手动计算行高,而Self Sizing Cells为展示动态内容提供了一个解决方案。以下是你使用Self Sizing Cells时需要注
2015-09-09 16:49:44 949
原创 iOS开发——Block循环引用问题的解决
下面的代码存在循环引用问题:@property(nonatomic, readwrite, copy) CompletionBlock completionBlock;//……self.completionBlock = ^ { if (self.success) { self.success(self.responseData);
2015-09-07 17:07:58 882
原创 iOS开发——实现TODO宏定义
// 转成字符串#define STRINGIFY(S) #S// 需要解两次才解开的宏#define DEFER_STRINGIFY(S) STRINGIFY(S)#define PRAGMA_MESSAGE(MSG) _Pragma(STRINGIFY(message(MSG)))// 为warning增加更多信息#define FORMATTED_MESSAGE(MSG) "
2015-09-07 15:08:05 1752
翻译 AFNetworking学习与使用(一)
原文:https://github.com/AFNetworking/AFNetworking#communicationHTTP请求操作管理 AFHttpRequestOperationManager封装了通过HTTP与Web应用程序通信的一般模式,包括:请求创建、响应序列化、网络可达性监控和安全性,当然也包括HTTP请求操作管理。
2015-08-31 13:43:34 578
原创 CocoaPods 执行 pod update 和 pod install 卡在Analyzing dependencies不动的解决方法
无论是执行pod install还是pod update都卡在Analyzing dependencies不动了,原因在于以上两个命令执行时会升级CocoaPods的spec仓库,加一个参数可以省略这一步,然后速度就会提升不少。加参数的命令如下: pod install --verbose --no-repo-update 或者 pod update --verbose --n
2015-08-31 09:10:29 3480
原创 iOS开发-我的iOS工程结构
写在前面从2013年12月实习就算是踏上了iOS开发的不归路,到现在为止还剩三个月就两年了。从一开始只知道堆代码,到现在开始重视优化业务流程,这之间一直在摸索学习,积累了一些经验,也从前辈那里学到了不少东西。有大神说”iOS开发是一个创造活动,不是一个科研过程,一切以产品为导向。摒弃研究思维,转向系统思维和创造思维。你就算把iOS 所有的API烂熟于心,但却不懂如何设计和创造一个产品,也无济于
2015-08-27 13:09:54 818 2
原创 OC基础回顾(十四)文件加载与保存
Cocoa提供两个处理文件的通用类:属性列表和对象编码。1.属性列表在Cocoa中,有一个类名为属性列表(property list)的对象,通常简写为plist。这些列表包含 Cocoa知道如何操作的一组对象。具体来讲,Cocoa知道如何将它们保存到文件中并进行加载。属性列表类包括NSArray、NSDictionary、NSString、NSNumber、NSDate和NSData,以
2015-08-27 10:57:34 1401
原创 OC基础回顾(十三)代码块和并发性
1.代码块 代码块对象(通常称为代码块)是对C语言中函数的扩展。除了函数中的代码,代码块还包含变量绑定。代码块有时也称为闭包(closure)。 代码块包含两种类型的绑定:自动型和托管型。自动绑定(automatic binding)使用的是栈中的内存,而托管绑定(managed binding)是通过堆创建的。1.1 代码块定义和实现代码块借鉴了函数指针的语法。与函数指针相似,代码块具有以下特征
2015-08-26 15:06:31 1678
原创 OC基础回顾(十二)协议
在OC基础(十一)中我们讨论了类别和非正式协议的奇妙之处。在使用非正式协议时,可以只实现你想要获得响应的方法。也不必在对象中声明任何内容来表示该对象可用作委托对象。所有这些任务可以用最少的代码完成。下面来学习正式协议。1. 正式协议 与非正式协议一样,正式协议包含了方法和属性的有名称列表。但与非正式协议不同的是,正式协议需要显示地采用。采用(adopt)协议的办法是在类的@in
2015-08-20 14:04:45 1043
原创 OC基础回顾(十一)类别
在编写面向对象的程序时,经常要为现有的类添加一些新的行为,通常采用创建子类的方法。不过有时候子类不方便,比如,想为NSString类添加一个新的行为,但是NSString实际上只是一个类簇的表面形式,因而为这样的类创建子类会非常困难。利用Objective-C的动态运行时机制,可以使用类别(category)来为现有的类添加新方法。1.创建类别通常类别代码放在独立的
2015-08-20 11:03:34 876
原创 Autolayout下设置多个View等比例排列
在实际开发过程中,经常会遇到将多个按钮等比例排列之类的界面,下面的方法是在IB中使用autolayout特性实现这种界面。1.首先拖进去一个View作为容器,根据实际情况设置好这个view的约束:2.拖入最左边的View,并设置其与容器View的上下左右的间距均为0:3.修改最左边View的约束的Multiplier参数,需要排列多少个View,
2015-08-12 15:02:16 3113 1
原创 There was an internal error.
Xcode版本:6.3.1设备:iPhone4 iOS版本7.2.1备注:这个问题只在iPhone4上存在,其他iPhone设备上不存在。问题详情:情况1:将工程打包成ipa文件安装在iPhone4上,应用可以打开,但是显示启动界面之后应用就闪退了。情况2:使用iPhone4的真机进行调试,build成功,但是如下错误提示:错误原因:Build Setti
2015-08-12 10:18:17 6353
原创 图像不能包含 alpha 通道或透明度
提交应用到Appstore,当上传App 图标时,提示下面这个错误:原因是:苹果增强了对图片的要求,图像的alpha通道为NO才行。解决方法:1.将图片改为JPG或者JPEG格式;2.用Mac自带的预览打开图像,选择 文件--》导出,然后去掉那个alpha通道的勾选,保存为PNG格式。
2015-08-12 09:38:17 9472
原创 OC基础回顾(九)对象初始化
1.两种不同的创建对象的方法1)[类名 new];2)[[类名 alloc] init];这两种方法是等价的。不过Cocoa惯例是使用alloc和init,而不是用new。因为alloc和init更能表现创建对象的实质,即分配内存和初始化对象。2.编写初始化方法-(id)init{ if(self = [super init])
2015-08-05 11:06:15 674
原创 OC基础回顾(八)内存管理
前言:内存管理是程序设计中常见的资源管理的一部分。如果只分配而不释放内存,就会发生内存泄露(leak memory),即程序的内存占用量不断增加,最终会被耗尽并导致程序崩溃。不要使用任何刚被释放的内存,否则可能误用陈旧的数据,从而引发各种各样的错误,而且,如果该内存已经加载了其他数据,将会破坏这些新的数据。程序运行过程中需要创建大量的对象,在Object
2015-08-04 17:11:00 710
原创 OC基础回顾(七)Foundation Kit 框架
1.前言Cocoa由两个不同的框架组成:Foundation Kit 框架:面向对象的低级类(如NSObject)和数据类型。Application Kit 框架:所有用户接口对象和高级类。Foundation 框架知识Cocoa的一部分,没有内置于Objective-C语言中。2.一些有用的数据类型Cocoa为我们提供了一些结构体(st
2015-07-22 21:29:34 1028
原创 OC基础回顾(六)了解和使用Xcode
1.了解IDE窗口(1)窗口布局一览窗口包括:工具栏,导航器面板,编辑器面板,调试器面板,检查器面板和库面板。可以按住Command键+一个数字键(从1到7)或点击导航器面板的顶端的图标来切换导航器面板的视图。在窗口的右上角有一组工具栏按钮(2)更改公司名称的方法新建Objective-C源文件时,Xcode会自动
2015-07-16 15:00:00 2061
原创 OC基础回顾 (五)源文件组织
拆分接口和实现 类的@interface指令、公共struct定义、enum常亮、#define和extern全局变量等代码通常放在头文件.h文件中。 所有的实现内容,例如@implementation指令、全局变量的定义、私有struct等代码都放在.m文件中。 如果用.mm做文件扩展名,编译器就会认为你使用Objective-C++编写的代码,这样就可以同时使用C++和Objective-
2015-07-14 16:38:22 877
原创 OC基础回顾(四)复合
在Objective-C中,复合是通过包含作为实例变量的对象指针实现的。只有对象之间的组合才能叫做复合。存取(accessor)方法 概念:用来读取或改变某一对象属性的方法。 用处:用来实现对复合对象的自定义和获取。 setter方法:为对象的变量赋值的方法。 getter方法:通过对象自身访问对象属性的方法。说明:如果要对其他对象中的属性进行操作,应该尽量使用对象提供的存取方法,绝对不恩
2015-07-14 14:31:49 624
原创 OC基础回顾(三)继承
OOP的两个重要方面:一是继承(inheritance),二是复合(composition)。继承:可以定义一个具有父类所有功能的新类,即它继承了父类的功能。 复合:也就是在对象中引用其他的对象。对象引用其他对象时,可以利用其他对象的特性。某些编程语言(例如C++)具有多继承,也就是一个类可以直接从两个或多个类继承而来。但是,Objective-C不支持多继承。如果你尝试在Objective-
2015-07-14 11:30:33 754
原创 OC基础回顾(二)面向对象编程
OC基础回顾——面向对象编程面向对象编程:Object-Oriented Programming,缩写OOP。是一种编程技术,最初是为了编写模拟程序而开发。Objective-C是一种面向对象的语言。间接,是OOP的一个关键概念,就是让其他人代替你去做某件事。在面向对象编程中使用间接 间接是OOP的核心。OOP使用间接来获取数据(利用变量、文件和参数等)。OOP真正的革命性在于它使用间接来调用
2015-07-13 22:19:46 663
原创 OC基础回顾(一)Objective-C是对C语言的扩展
1.Xcode通过.m扩展名来表示文件使用的是Objec-C代码,应由Obj-C编译器处理。而C编辑器处理C文件,C++编译器处理.cpp文件。2.Objective-C刚诞生的时候,扩展名.m代表messa,它指的是Objecti-C的一个主要特性。3.在C语言中,程序员通过使用基于#ifdef命令的方案来避免一个文件包含另一个文件,而后者又包含前者的情况。而在OC中
2015-07-13 16:54:02 1266
原创 iOS—TableView的分割线从边框顶端开始
设置tableview,代码: if ([self.tableView respondsToSelector:@selector(setLayoutMargins:)]) { [self.tableView setLayoutMargins:UIEdgeInsetsZero]; }设置cell,代码:if ([cell respondsToSele
2015-07-08 11:25:47 608
原创 iOS8—LanuchImage的设置方法
方法一:与之前iPhone5的方法类似,再为iPhone6和iPhone6 Plus添加两张特殊的图片。下面是具体需要的一些图片的命名方式。iPhone3G/iPhone3GS Default (分辨率:320*480) iphone4/iPhone4s: Default@2x (分辨率:640*960) iPho
2015-07-06 09:53:49 2155
原创 iOS—复制字符串到剪切板
UIPasteboard *pasteboard = [UIPasteboard generalPasteboard];pasteboard.string = self.label.text;
2015-07-01 11:06:00 1411
原创 使用Versions时.a文件不能成功被提交的解决方法
如下图,打开Show Ignored Items 或者快捷键Shift+Command+i ,打开被忽略的条目。 这时,项目中被忽略的文件就会显示出来,条目前面会显示这个图标。(下图是我已经把.a文件提交了,所以不再显示,之前是没有显示出来的。) 点击这一行,然后右击,选择Add,这个文件就被添加上去了。 最后Commit,.a文件就被成功提交了。
2015-06-29 09:41:23 647
原创 iOS8新特性SizeClasses
一、什么是Size Classes? Size Classes是iOS8新特性,是对老式UI思路的全新抽象。它把各个设备屏幕(iphone4,5,6, ipad,iwatch?)以及它们的屏幕旋转状态都抽象成屏幕Size的变化,将这些Size归纳成几个类别(Class) 宽(正常,任意, 紧凑),高(正常,任意, 紧凑) 3x3共9
2014-11-21 14:03:31 967 1
原创 iOS8 无法自动定位城市
这两个新增的方法导致,之前写的程序在iOS8运行会出现,定位功能无法正常使用这样让iOS8正常使用定位功能呢?你需要在info.plist表里面添加两条变量在Info.plist中加入两个缺省没有的字段NSLocationAlwaysUsageDescriptionNSLocationWhenInUseUsageDescription
2014-10-15 16:52:02 1176
原创 iOS—怎样让UITableView的表头随着tableView一起滚动?这样解决
//去掉UItableview headerview黏性 - (void)scrollViewDidScroll:(UIScrollView *)scrollView { if (scrollView == self.myTableView) { CGFloat sectionHeaderHeight = YOUR_HEIGHT;
2014-10-09 16:48:37 7316
HTML教程(w3school上清晰的HTML教程资源,方便您的学习!)
2012-05-08
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人