- 博客(25)
- 问答 (1)
- 收藏
- 关注
原创 iOS渠道追踪和来源统计的几种原理
在开始之前,我们先来看看安卓的渠道统计。Google官方的应用商店Google Play在国内一直是无法使用的状态,所以国内的安卓App分发,都是依托数十个不同的应用市场或发行渠道,如百度、360、腾讯等互联网企业以及小米、华为、魅族等手机生产商。对于安卓App的渠道追踪,主要是围绕上面这些大的渠道来进行,并且这些渠道自己一般也会提供非常详尽和周全的数据分析给应用开发者。iOS的发行渠道则与安卓有...
2017-05-19 11:58:26 14799 6
原创 苹果发布用户来源功能,从渠道到数据监控或将全面洗牌!
细心的开发者发现,在近期 iTunes Connect 中,苹果发布低调发布了一项重大功能,从4月15日开始提供数据,就目前而言将会冲击到一部分推广渠道及第三方iOS数据统计平台。根据苹果官方发布的具体内容如下:We've added new data to Sources and Metrics. Now you can learn more about where customers disc...
2017-05-18 11:47:25 4229
原创 多用块枚举,少用for循环
注:本文整理自《Effective Objective-C 2.0编写高质量iOS 与 OS X代码的52个有效方法》 在Objective-C中,通常有四种遍历方式:for循环、for in快速遍历、NSEnumerator以及block块枚举,下面一一进行介绍。
2016-08-18 17:55:12 1605
原创 OC关键字--@dynamic
@dynamic这个关键词,通常是用不到的。它与@synthesize的区别在于:使用@synthesize编译器会确实的产生getter和setter方法,而@dynamic仅仅是告诉编译器这两个方法在运行期会有的,无需产生警告。假设有这么个场景,B类,C类分别继承A类,A类实现某个协议(@protocol),协议中某个属性( somePropety )我不想在A中实现,
2017-07-28 11:20:57 488
原创 assign、retain和copy的区别
一、assign属性 当数据类型为int、float等原生类型时,可以使用assign,否则可能导致内存泄露。例如当使用malloc分配了一块内存,并把它的地址赋值给了指针a,后来如果希望指针b也共享这块内存,于是讲a赋值给(assgin)b。这时就用到了assgin,此时a和b指向同一块内存。但是现在问题出现了,当a不再需要这块内存时,能都直接释放呢?肯定是不能的,因为a并不知道b是否
2017-07-26 17:58:51 1814
原创 设计模式——工厂模式之工厂方法
简单来说,工厂方法就是定义一个统一的接口(协议),用于创建对象,然后由子类去进行实现,我只定义工厂规范标准,具体的实现交给具体的工厂,去生产对应的产品,这样干到底有什么用呢?还是解除耦合。比如我们让工厂生产电脑,他有这样几个角色第一个角色:抽象工厂(例如:IComputerFactory)第二个角色:具体工厂(例如:LennovoComputerFactory)第三
2017-06-09 17:33:57 323
原创 设计模式——工厂模式之简单工厂
我们常见的设计模式,大致可以分为以下三类:创建型、结构性、行为型。工厂模式,属于创建型。工厂模式到底起的是什么作用呢?概括来说就是解耦。当某一类对象需要频繁创建的时候,就会和程序产生比较大的耦合,在对象初始化属性较多时,工厂模式可以较少这种耦合,这就是他的作用。一般情况下根据场景不同,工厂模式有几种不同的形式,简单工厂、工厂方法和抽象工厂,可以说这三种的关系式层层递进,因为内容太多
2017-06-07 16:23:22 338
原创 开发设计模式——单例模式
我们常见的设计模式,大致可以分为以下三类:创建型、结构性、行为型。今天我们要说的单例模式,属于三种类型当中的创建型。在开始之前呢,我们需要搞懂一个问题,就是我们为什么要用单例,它产生的背景是怎么样的呢?其实这与我们的开发习惯有很大关系。在xcode 4.2之前我们一直是手动分配和释放内存,也就是MRC,每当我们要销毁实例,都要手动release去释放内存,但是这步操作我们经常会忘记,这个问
2017-05-25 16:28:52 342
原创 UML基础
这篇文章主要介绍UML的基本概念,可以帮助开发者快速了解UML,并熟悉它的要素和基本结构,更深入的讲解会在别的文章中说,欢迎大家提出宝贵意见。1.简介 UML (Unified Modeling Language)为面向对象软件设计提供统一的、标准的、可视化的建模语言。适用于描述以用例为驱动,以体系结构为中心的软件设计的全过程。UML的定义包括UML语义和UML表示法两
2017-05-23 17:18:23 397
原创 Objective-C——中文URL编码和解码
NSString类中有内置的方法可以实现。他们分别是:- (NSString *)stringByAddingPercentEscapesUsingEncoding:(NSStringEncoding)encoding- (NSString *)stringByReplacingPercentEscapesUsingEncoding:(NSStringEncoding)encoding
2017-05-08 17:11:33 430
原创 Omnigraffle Pro 6注册码/许可证
Omnigraffle Pro 6,Mac下的画图工具,类似于Windows下的Visio 。下面是几个可用的注册码
2016-08-19 18:15:48 1225
原创 多用类型常量,少用#define预处理指令
注:本文整理自《Effective Objective-C 2.0编写高质量iOS 与 OS X代码的52个有效方法》 不要用预处理指令定义常量。这样定义出来的常量不含类型信息,编译器只是会在编译前据此执行查找与替换操作。即使有人重新定义了常量值,编译器也不会产生警告信息,这将导致应用程序中的常量值不一致。在实现文件中使用static const来定义“只在编译单元内可见的常量”(translation-unit-specific constant)。由于此类常量不在全局符号表中,所以无须为其名称加前
2016-08-18 19:19:51 327
转载 关于UITableView的几个秘密
1·捉摸不定的contentOffsetUISrollview在滑动的时候,我们要获取其不断变化的contentOffset值,即可通过其协议来获取也可以在其layoutSubviews里面获得,而后者所获取到的offset值会来得频繁很多——当快速滑动的时候,scrollView的协议回调次数远远低于layoutSubviews调用次数,也即contentOffset的获取次数更少,
2016-08-02 11:54:28 837
原创 UILabel设置字体发光效果
1、新建一个继承自UILabel的类 2、在这个类中定义red、green、blue三个颜色值变量和一个发光范围变量glowSize。 3、重写UILable的drawTextInRect方法,并使用CGContextRef来进行绘制。.h文件@interface FBGlowLabel : UILabel //定义颜色值全局变量和放大值全局变量 @property(assign ,non
2016-08-02 11:00:11 1797
转载 【转】iOS中属性与成员变量的区别
【转】iOS中属性与成员变量的区别 一、类Class中的属性property 在ios第一版中,我们为输出口同时声明了属性和底层实例变量,那时,属性是oc语言的一个新的机制,并且要求你必须声明与之对应的实例变量,例如:@interface MyViewController :UIViewController{ UIButton *myButton
2016-08-01 18:49:49 291
原创 NavigationController的基本使用
//创建一个纯代码导航控制器,先删掉自带的控制器和storyboard,这个方法在程序启动完毕的时候调用- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary*)launchOptions {//1.创建UIWIndow
2016-03-19 00:26:42 330
原创 UICollectionView
UICollectionView很强大,tableView可以实现的功能,collectionView都可以实现,tableView实现不了的,它也能实现,但它在使用上与tableView有两点区别 :1.collectionView在使用的时候 必须要注册cell,2.必须创建一个布局对象给collectionView。// 注册cell有三种方式:1
2016-01-23 23:16:01 308
原创 UIPageControl和NSTimer的使用
UIPageControl的基本使用//0.设置总页数self.pageControl.numberOfPages = ImageCount;//1.设置其它页的颜色self.pageControl.pageIndicatorTintColor = [UIColor yellowColor];//2.设置当前页的颜色self.pa
2016-01-20 23:56:21 406
原创 监听键盘的弹出与隐藏(界面跟随键盘一起上下移动)
今天说一下点击texeField时,让界面跟着键盘一起上下移动的方法步骤(本人原创博客代码全部为自己手敲,然后复制过来给大家看)1.让控制器监听键盘frame发生改变的通知 :UIKeyboardWillChangeFrameNotification [[NSNotificationCenter defaultCenter] addObserver:selfsele
2016-01-17 22:22:10 452
原创 xib在UITableView中的用法
摘了自己的一部分代码,写在这里当每个cell的宽度都一样的时候 可以使用xib,高度不一样的时候要自定义Cell在viewDidLoad方法中 创建FooterView和HeaderView,用loadNibNamed加载创建的xib,然后通过tableView的tableFooterView属性,把创建的footerView赋给tableView 例:RCFooterView*
2016-01-08 16:31:28 589
原创 UITableView的常用方法和属性
以下总结的方法和属性,是我自己在平时的开发中经常使用到的,实用性很强,红字的是比较重要却又不太好记住的方法,大家可以拿去看一下!如果哪里出现错误,欢迎指出来,大家一起讨论学习!首先是tableView两个代理的常用方法:1.UITableViewDelegate的方法1>点击某个cell执行什么操作的方法- (void)tableView:(UITableVie
2016-01-06 00:22:07 305
原创 UIScrollView的常用属性和方法(自己总结)
几天总结的是scrollView的一些基本用法,适合初学者学习1.设置scrollView的contentSize"设置滚动范围"self.scrollView.contentSize = self.imageView.bounds.size;2.contentOffset用来设置内容滚动到什么位置self.scrollView.contentOffse
2016-01-05 17:48:30 515
原创 浅谈Category的三种使用方法
OC是一门面向对象的开发语言,这是OC与C最大的区别,在面向对象开发中,我们需要创建很多的类,这些类一旦数量多起来,我们要添加一些属性或方法的时候很不方便,写着写着自己有时候都蒙了,于是我们提出了Category,Category 是类的 一种扩展方式,通过Category可以给已经写好的类添加方法或属性,已经写好的类我们一般是不能动的 ,所以要采取Category 的方式。Categ
2016-01-03 01:07:27 1816
空空如也
objective-c中,通知机制可以一对多,代理为什么不能
2016-03-06
TA创建的收藏夹 TA关注的收藏夹
TA关注的人