自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+

SarielTang的专栏

汤晔-原总参第六十研究所软件中心研发工程师,从事c++工作,最近转型ios移动开发。

  • 博客(43)
  • 收藏
  • 关注

原创 iOS性能调优总结

引言说起性能调优,我本来想说很多,但是觉得枯燥的语言并不能表达我对于性能调优的重视,所以我打算举个不太恰当的例子。曾经有这么一家工厂,他们的产品从原材料到出厂一共需要经过30条产品线。这家公司的老板对底下的员工曾多次强调过质量的重要性,员工们却不以为然,他们觉得自己做的都很不错。有一次,老板去视察,走到了一条产品线上,问起工人,这条产品线的合格率能达到多少,那个工人自豪的说,"98%!"。老板却

2016-04-28 22:32:48 6446 2

原创 OC与js的交互 - javascriptCore

前言鉴于很多小伙伴最近老是问我关于js与OC交互的问题,原本打算先写完CoreAnimation的我,决定先吧这块知识点整理出来,毕竟核心动画的知识的确比较多,不是那么容易写完。OC与js的交互方式OC与js的交互方式有好几种,不借助第三方框架的情况下,我们有两个选择,webkit和javascriptCore。方法一:通过webkit进行OC与js的交互没认识JavaScriptCore之前,如

2015-12-25 10:56:50 1227

原创 iOS技术沙龙之 - 核心动画(1)

前言上周末,非常开心的进行了我们**iOS技术沙龙-北京站**的第一次聚会。虽然因为是第一次聚会,准备的还不是很充分,但是大家还是讨论的很热烈,效果很不错。第一次分享的内容并不是很多,今天开始,每个月我会把分享的内容以尽量精简的语言整理在blog上面,以供需要的朋友翻看。CALayer一、核心动画介绍Core Animation 是跨平台的,支持iOS环境和Mac OS X环境,而CALayer

2015-11-20 22:04:40 906

原创 重写View的一些方法

当开发者打算派生自己的UI控件时,首先定义一个继承View基类的子类,然后重写View类的一个或多个方法,通常可以被用户重写的方法如下。Ø initWithFrame::前面已经见到,程序创建UI控件时常常会调用该方法执行初始化,因此,如果你需要对UI控件执行一些额外的初始化,即可通过重写该方法来实现。Ø initWithCoder::程序通过在nib文件中加载完该控件后会自动调用

2015-10-15 16:04:25 777

翻译 iOS的一些偏门知识点小结

Initializing a View Object //初始化view- (id)initWithFrame:(CGRect)aRect //通过一个矩形对象初始化Configuring a View’s Visual Appearance //配置视觉展示@property(nonatomic, copy) UIColor *backgroundColor //设置背景

2015-09-09 14:11:37 609

原创 快速掌握iOS开发 - 多线程开发技巧

在iOS下使用多线程,我们通常会有两种选择,GCD或者NSOperation。这个大家都清楚,但是如何才能使用好多线程进行开发,往往在于开发者是否理解了多线程的原理和使用技巧。 今天,我给大家简单分享一些在iOS下开发时的多线程使用技巧,掌握了这些技巧,能够让大家快速的了解在iOS下的多线程开发方式。基本概念队列(负责调度任务) 串行队列:一个接一个的调度任务并发队列:可以同时调度多个任务

2015-09-05 23:25:38 501

转载 UITextField功能方法详解

//初始化textfield并设置位置及大小  UITextField *text = [[UITextField alloc]initWithFrame:CGRectMake(20, 20, 130, 30)]; //设置边框样式,只有设置了才会显示边框样式    text.borderStyle = UITextBorderStyleRoundedRect;

2015-08-22 16:02:34 532

转载 ALAsset,ALAssetsLibrary,ALAssetsgroup常见属性及用法

ALAsset,ALAssetsLibrary,ALAssetsgroup常见属性及用法

2015-07-14 15:39:11 532

原创 如何通过git协作开发

最近iOS群里的一些小伙伴刚刚毕业,刚参加工作的小伙伴们,对于如何进行git下的一个写作开发抱有较大的疑惑,今天小汤我就给大家分享个git下协作开发的小技巧。

2015-07-03 23:05:25 952

原创 Git远程操作详解

Git是目前最流行的版本管理系统,学会Git几乎成了开发者的必备技能。 Git有很多优势,其中之一就是远程操作非常简便。本文详细介绍5个Git命令,它们的概念和用法,理解了这些内容,你就会完全掌握Git远程操作。

2015-07-01 15:27:58 504

原创 苹果的WWDC背后有什么深意?

从网上开到一篇分析苹果WWDC背后深意的一篇文章,这篇文章的作者对于苹果今年“无亮点”的WWDC大会作了一个总结,从开发者的角度,从整个苹果公司的战略角度去分析了这次苹果WWDC大会的深意,作者的观点不一定完全是正确的,但是其中的一些想法,却是引人深思。(至少,小汤我想到了很多)。。。所以这里,小汤把原文贴出来给大家分享一番,也从开发者的角度,对于其中的一点,发表些自己的浅见。觉得我说的不对的,就当我扯淡好了

2015-06-16 14:41:31 703

原创 不要再坑人啦!NSOperation才是苹果推荐使用的多线程技术!

首先声明一下,小汤我在实际开发中呢,实际上也是喜欢用GCD多一点,因为用起来感觉更方便。 但是,事实是什么呢? 苹果推荐使用的实际上是NSOperation,所以希望对此没有研究的各位不要再在博客中误导他人了啊。 再换句话来说,苹果开发使用的Objective-C语言就是面向对象的,她怎么可能推荐大家使用基于C语言的面向过程开发的东西呢? (这句话只是吐槽,请勿喷…)

2015-06-07 14:07:14 1364 2

原创 iOS开发 - 使用自定义字体

上次有个同事问我,XXapp的字体怎么那么萌啊?我也想要搞个萌哒哒的字体!于是,就有了今天这篇blog.首先,我们在iOS开发中,苹果给我们提供了许多的字体,当然这里我就不列举啦,都是些英文,小汤表示看不懂啦,我要自己搞萌萌哒的字体啊啊啊啊!!!比如说这样的:又比如说这样的:好了,回归正题,上面卖萌的绝对不是作者君啦. 那天,作者君从网上下载了一个ttf的字体如下: 然后小汤我非常淡定的执行

2015-06-06 15:36:31 1419

原创 你研究过单例么?这样写单例效率最高.

小汤我在琢磨dispatch_once的实现原理的时候,无意间发现,dispatch_once的效率似乎还有提升的空间,忍不住出来嘚瑟一下.给大家介绍一下OC下常用的单例实现方式,以及效率比较高的dispatch_once实现单例的方式,最后,介绍一下小汤随手试验得到的一个效率更高一些些的单例实现方式.

2015-06-06 15:09:48 1263

原创 Swift学习之每日一tip (7) @objc

今天隔壁老王突然问起我,Swift里面的@objc是个神马玩意儿?于是就有了今天的这个tip。那么话说回来,既然说到@objc,就不得不扯一扯Swift和Objective-C之间不得不说的一些事啦^_^Objective-C和Swift混合开发Swift 语言的初衷是希望能摆脱 Objective-C 的沉重的历史包袱和约束,但是不可否认的是经过了二十多年的洗礼,Cocoa 框架早就烙上了不可

2015-05-24 13:03:26 917

原创 Swift学习之每日一tip (6) 单例

近日,在翻看以前写过的一些OC应用的时候,看到了OC的单例,然后暮然想要试着写一写Swift下的单例,于是,在经过一番波折后,终于将Swift下的单例写了出来。OC下的单例实现栗子:+ (instancetype)sharedNetworkTools { //定义一个任意类型的静态实例 static id instance; static dispatch_once_t o

2015-05-22 22:59:15 545

原创 Swift版本的图片轮播器框架

由于在开发中,总是要写图片轮播器之类的东东,写的烦了,忍不住就用Swift写了一个非常方便的图片轮播器的框架https://github.com/SarielTang/CycleView大家在使用的时候,只需要像这样:import CycleViewclass className : PictureCycleController{ //override loadView function

2015-05-21 11:08:44 2090 2

原创 在swift中保存图片到相册

本来是没有必要把这么小的一个知识点写到博客中的,但是,由于OC中的一些语法在swift中实现的时候有些特别,所以单独写下来到博客中,希望能够帮助到有需要的同学。1.OC中的写法在OC中,我们需要保存图片到相册需要调用这个方法:void UIImageWriteToSavedPhotosAlbum(UIImage *image, id completionTarget, SEL completion

2015-05-20 22:24:02 4822

翻译 Swift学习之每日一tip (5)@autoclosure

@autoclosure 可以说是 Apple 的一个非常神奇的创造简单说,@autoclosure 做的事情就是把一句表达式自动地封装成一个闭包 (closure)。这样有时候在语法上看起来就会非常漂亮。比如我们有一个方法接受一个闭包,当闭包执行的结果为 true 的时候进行打印:func logIfTrue(predicate: () -> Bool) { if predicate()

2015-05-13 23:51:34 655

原创 OC和Swift混编(惊喜!)

今天在和一位前辈交流的之后,使用了OC和Swift混编开发,遇到了一个让我忍不住要欢呼的情况,在这里,跟大家分享一下,也再次赞叹一下XCode的强大.OC和Swift混编出现最多的就是在编写Swift代码的过程中使用OC框架了. 以前,在XCode6.3beta版本的时候,我犹记得我们在进行OC和Swift混编的时候,需要这样做.先通过Pod导入第三方框架,然后,使用 Xcode 打开工作组文

2015-05-12 20:30:25 1117

原创 Swift学习之每日一tip (4)版本对比与一些小技巧

首先,非常抱歉,昨天本来说是今天要给大家写一下1.1版本和1.2版本之间的区别的。但是,在整理后,1.2增加的许多功能网上早已经有人提出过了,所以这里就不占用大家的时间了,想知道的直接百度就可以了。 今天呢,小汤我就把我在编码中遇到的1.1的语法在1.2下冲突的一些小例子列举一下,并且给大家介绍一下swift中下划线与#号的一些小技巧吧。1.1版本与1.2版本几个常见冲突:数组的表示 1.1版

2015-05-11 21:33:52 523

原创 Swift学习之每日一tip (3)闭包

闭包介绍最近在学习swift的过程中,发现很多人都对于swift的闭包有很深的疑惑,今天就以我个人学习swift 1.2版本下的一些经验进行一些分享,如有错漏,望大家指出。ps.《关于Swift学习之每日一tip》我这段时间会持续更新,而其中关于swift的内容都是在今年(2014)春节之后,苹果推出Xcode6.3测试版的之后推出的swift 1.2的语法,关于1.2与1.1的语法,我会在明天的

2015-05-10 01:16:18 709

原创 swift的一些知识点演练

下面这些代码可以在playground中展现出来import UIKit/* 实例化一个 UIView的对象,保存在堆中[[UIView alloc] initWithXXX:xxx] 所有 OC中以这种格式的实例化方法,在 swift中都可以使用 类(XXX:)*/let view =UIView(frame: CGRe

2015-05-09 20:21:10 490

转载 水波特效处理

这篇博文译自以下这篇文章——http://www.gamedev.net/page/resources/_/technical/graphics-programming-and-theory/the-water-effect-explained-r915由于这篇文章主要用Pascal语言进行描述的。因此我后面会添加一些注释,并结合Apple提供的ripple相关的Demo给出一些额外的遵守

2015-05-08 18:15:23 777

转载 ios系统安全机制概览

iOS通过以下几种机制来保全整个系统的安全性: 一:系统结构所有iOS设备中,系统与硬件都高度集成,从系统启动、系统更新、应用的安装、应用的运行时等多个方面来保全系统的安全,具体包括: 1:所有iOS设备在处理器内都集成有一段名为Boot Room的代码,此代码被烧制到处理其内的一块存储上,并且只读,可以认为是完全可信的。系统启动时,Boot Room通过苹果的Apple Ro

2015-05-08 18:13:19 749

转载 Objc-Runtime理解

初学 Objective-C(以下简称ObjC) 的人很容易忽略一个 ObjC 特性 —— ObjC Runtime。这是因为这门语言很容易上手,几个小时就能学会怎么使用,所以程序员们往往会把时间都花在了解 Cocoa 框架以及调整自己的程序的表现上。然而 Runtime 应该是每一个 ObjC 都应该要了解的东西,至少要理解编译器会把[target doMethodWith:var1];

2015-05-08 18:06:17 438

原创 Swift学习之每日一tip (2)词法结构

语言参考:“箭头(→)用来标记语法产式,可以被理解为“可以包含”。” “选择性的语法产式由竖线(|)分隔。当可选用的语法产式太多时,为了阅读方便,它们将被拆分为多行语法产式规则。”注释:“注释(comments)被编译器当作空白处理。单行注释由 // 开始直到该行结束。多行注释由 /* 开始,以 */ 结束。可以嵌套注释,但注意注释标记必须匹配。”标识符:标识符(identifiers)可以由以下

2015-05-08 17:59:03 414

原创 Swift学习之每日一tip (1)Selector

技巧:在Swift中,我们可以通过 字符串赋值 的方式完成Selector的创建。原因在于Selector类型实现了StringLiteralConvertible方法。注意:selector 其实是 Objective-C runtime 的概念,如果你的 selector 对应的方法只在 Swift 中可见的话 (也就是说它是一个 Swift 中的 private 方法),在调用这个 selec

2015-05-08 09:41:53 463

原创 应用程序中内存分配概要

内存分配区域在计算机中,每一个应用程序的数据都是保存在内存中的,不同类型的数据,保存的内存区域不同:1. 栈区2. 堆区3. 全局区、静态区4. 常量区5. 代码区内存加载顺序当一个应用程序首次启动时,首先会加载代码,也就是我们编写的机器码,将他们加载到代码区中; ==>加载常量; ==>加载全局区/静态区中已初始化的内容; ==>加载全局区/静态区中的未初

2015-04-27 08:31:00 557

转载 Unix下终端命令大全

登录工作站透过 PC登录工作站执行格式:telnethostname (在 dos下执行)telnet ip-address Example:telnet doc telnet 140.122.77.120注:可利用指令 arphostname或 arpdomain_name查询ip_address2登录步骤·      login : ____

2015-04-24 22:26:58 746

转载 开源免费天气预报接口API以及全国所有地区代码!

国家气象局提供的天气预报接口接口地址:http://www.weather.com.cn/data/sk/101010100.htmlhttp://www.weather.com.cn/data/cityinfo/101010100.htmlhttp://m.weather.com.cn/data/101010100.html对于第三个接口,返回信息比较全面

2015-04-23 21:37:11 616

原创 ios知识点扩充(1)

##Associative关联(在oc开发中,用于扩展属性的一种方式)- 关联是指把两个对象相互关联起来,使得其中的一个对象作为另外一个对象的一部分。- 使用关联,我们可以不用修改类的定义而为其对象增加存储空间。这在我们无法访问到类的源码的时候或者是考虑到二进制兼容性的时候是非常有用。- `创建关联`要使用到Objective-C的运行时函数:objc_setAssocia

2015-04-23 07:46:01 433

转载 微信入口绑定,微信事件处理,微信API全部操作

微信入口绑定,微信事件处理,微信API全部操作包含在这些文件中。微信支付、微信红包、微信卡券、微信小店。1. index.php include_once 'lib.inc.php';$wcObj = new WeChat("YOUKUIYUAN");$wcObj->wcValid();复制代码2. 微信入口类

2015-04-21 20:15:44 2972

原创 OS开发入门教程(1)

OS开发入门教程(1)学习了一段时间的IOS,回顾以往,打算写上一个IOS的学习入门教程给大家,希望对于想要学习IOS的同学朋友们有一定的帮助。今天给大家带来的是最简单的IOS控件拖动,主要是为了让同学们熟悉storyboard下的常用拖控件的操作,下面通过一个简单的QQ登录窗口来向同学们做一个展示。首先打开xcode,我的xcode是6.1.1的版本,大家在开发过程中尽量使用最新

2015-03-15 22:30:45 552

原创 Objective-C中的类学习第一篇(补)

昨天写的类学习第一篇中还有一些基础内容需要做一些补充:首先是关于如何合理的设计一个简单的类。附上一段自己练手的学生遛狗的代码:#import//性别typedef enum{    SexMan,    SexWoman} Sex;//日期typedef struct {    int year;    int month;    int

2015-01-18 22:40:14 403

原创 Objective-C中的类学习第一篇

1.类的设计:  1> 类名(第一个字母大写,不要用下划线)  2> 属性  3> 行为(功能)//因为使用了NSObject#import/*  类名:Car  属性:轮胎个数,速度  行为:跑 *///类的声明//用来声明对象的属性和行为//:NSObject 目的是:让Car这个类具备创建对象的能力@interface Car :

2015-01-17 21:37:59 489

转载 C++异常及错误处理

计算机应用程序中离不开错误处理,尤其是生产型大型软件系统。应用软件系统运行属于循环处理事务,出错后需要保证不能让软件程序直接退出。这就需要使用一定的程序容错处理来应对。一般情况下,大型软件开发中的软件系统容错处理会结合异常处理、错误代码定义的使用与相应的出错处理日志记录,包括一定的参与大型生产系统的监控系统等配合保障系统的稳定性。下面本章将会就C++软件系统中提供的异常处理作详细的讲述,包括基本概

2015-01-08 23:26:34 1952

原创 C++数据类型转换详解

首先,C++中的数据类型转换分为三种:1、自动转换是将两个数据类型的变量进行相互运算的过程中,系统把小的数据类型转化成大的数据类型后再进行运算,称之为运算过程中自动转换。2,强制转换是指,在一个无论是什么类型的变量前加上你要转换成的数据类型的定义名,再将后面的变量用括号括起来,也叫加括号重新定义转换。3,赋值转换,不改变数据类型,但也相当于转换,就是赋到什么类型,它的值就进入什么类型中

2015-01-07 20:50:10 1296

转载 【看看你公司好不好】一张图就能让你轻松识别:好公司VS烂公司

一家好公司的20条铁规  第1条铁规:公司利益高于一切  公司是全体员工的生存平台,个人利益不能亦不得与之发生冲突。一旦祸起萧墙,轻则申斥处罚,重则革职走人。砸了老板或大伙儿的饭碗,谁也别想有好日子过。  第2条铁规:团队至高无上  团队是各部门的生命线,在团队力量支撑产业实体的市场经济时代,除非你是来自异域的月球空心人。  第3条铁规:用老板的标准要求自己

2015-01-06 22:27:41 507

转载 关于Static、全局变量、局部变量、Extern之间的种种

static作用(修饰函数、局部变量、全局变量)在C语言中,static的字面意思很容易把我们导入歧途,其实它的作用有三条。(1)先来介绍它的第一条也是最重要的一条:隐藏。当我们同时编译多个文件时,所有未加static前缀的全局变量和函数都具有全局可见性。为理解这句话,我举例来说明。我们要同时编译两个源文件,一个是a.c,另一个是main.c。下面是a.c的内容char a

2015-01-06 22:19:05 1366

空空如也

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除