自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+

看不见的城市

如果有一天我们淹没在茫茫人海中,庸碌一生,那一定是我们没有努力活得丰盛

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

原创 生产者和消费者

生产者public class Cooker implements Runnable{ private String name; private Disk disk; private String foods[]; private final Random random=new Random(); public String getName() { return name;

2014-05-03 11:17:27 833

原创 多线程的一点小事

在开发中很少用到多线程

2014-05-03 11:04:30 874

原创 归档和偏好设置

由于直接写入plist文件的局限性,不能够存储自定义对象,所以就有了归档,NSString、NSDictionary、NSArray、NSData、NSNumber等类型的对象,可以直接用NSKeyedArchiver进行归档和恢复,因为它们内部实现了NSCoding协议,比如NSString实现了NSSecureCoding,而NSSecureCoding实现了NSCoding协议,不是所有的对

2014-03-05 20:58:07 1507

原创 plist文件

ios开发中经常会用到plist文件,其实就是xml文件,只是扩展名为.plist,NSArray或NSDictionary对象可以使用writeToFile:atomically:方法直接写入到Plist文件,可以将Plist文件内容直接加载至NSArray或NSDictionary,而无需XML解析!保存plist文件 NSArray *document=NSSearchPathFor

2014-03-03 21:41:55 1761

原创 IOS的沙盒机制

iOS应用程序只能在为该改程序创建的文件系统中读取文件,不可以去其它地方访问,此区域被称为沙盒,所有的非代码文件都要保存在此,例如图像、图标、声音、映像、属性列表、文本文件等1.每个应用程序都有自己的存储空间2.应用程序不能翻过自己的围墙去访问别的存储空间中的内容3.应用程序请求的数据都要通过权限检测,假如不符合条件,不会被放行IOS沙盒结构应用程序包:(Bundl

2014-03-03 20:46:08 1234

原创 ios多控制器切换

iOS中控制器切换分为:modal(模态窗口遮挡)、push(uinavigationcontroller)、uitabbarcontroller和自定义控制器切换。modal代码方式,耦合度较高,控制器相互依赖,所以使用modal的时候用storyboard。一.通过代码方式@protocol LoginControllerViewControllerDelegate;@

2014-02-23 21:17:26 2362

原创 kvc和kvo

oc为操作对象属性提供了两种方法来间接操作属性,kvc就是利用键值对来改写对象的属性值,类似字典,而kvo则提供了监控对象的某个属性值发生改变。kvc and kvoPerson *p=[[Person alloc]init]; PersonObserver *ob=[[PersonObserver alloc] init]; Bo

2014-02-23 11:42:19 1032

原创 ios程序运行过程以及常见文件

ios程序具有完整的生命周期,当用户点击图标的时候,会通过函数入口main开始程序,也就是项目中的main.m文件中的UIApplicationMain 方法,这个时候,会创建一个UiApplication的实例有且只有一个(单例),UiApplication象征着整个程序,然后会创建一个UiApplication的代理对象delegate,再开启一个消息循环监听系统事件,如果监听到某一个动作就会

2014-02-22 23:06:47 1082

原创 UITableView的基本使用三(自定义Cell)

在项目中,我们经常会使用UITableView,但是tableView中的cell格式又不一定每次都是一样的,所以我们需要自己实现我们自定义的cell,而自定义cell的方式也由很多,我们先采取用Xib的方式。1.通过xib创建一个cell,并且通过tag来获取cell上的其他子元素,这种方式会产生很多的tag,让tag都暴漏在控制器中,不方便管理,而且viewWithTag性能低下,每次

2014-02-16 16:34:23 6242

原创 UITableView的基本使用二(性能优化)

在使用UITableView的时候,会有很多的cell数据产生,如果数据量很大,而且用户在界面上操作频繁的时候,就会造成性能下降,那么这个时候我们要考虑使用缓存机制,也就是像Java中的缓存机制一样,用过Memcache或者使用过数据库连接池的同学肯定知道这个原理,如果缓存池中有就用缓存池中的,如果没有再创建。而在操作cell的时候,比如删除添加修改的时候,都要遵循MVC模式,通过修改数据来修改c

2014-02-15 17:35:24 3247

原创 微信开放平台API对接

研究了一下微信公众账号的开放平台的APi/** * * @Description: 微信消息处理以及用户分组 * @author zhangjun * @date 2014-1-7 上午10:51:51 */public class WeiXinMessageAction extends BaseAction{ /** * */ private static f

2014-02-13 19:18:41 3387

原创 口袋通api对接

由于公司最近要求和口袋通对接微商城,所以用到了口袋通的API,其实和微信开放平台的API很像,那么在上代码之前先说说口袋通吧,口袋通也是随着微信的浪潮诞生自白鸦之手,都是基于微信开放平台,对微信公众账号做二次开发,不过目前口袋通完全免费,和他们对接的过程中,有过一些沟通,反馈挺快的。/** * * @Description: 口袋通对接工具类 * @author zhangJun *

2014-02-13 17:13:12 4481

原创 UITableView的基本使用一

UITableView继承自UIScrollView,所以内容过多的分屏操作,也不用开发者操心了,开发中很多数据展示都用到这个空间,比如类似九宫格菜单和系统设置,通讯录等等。#pragma mark - 数据源方法 返回分组-(NSInteger)numberOfSectionsInTableView:(UITableView *)tableView

2014-02-06 20:40:12 1800

原创 UIScrollView的分页和使用

UIScrollView同样是继承UIView,主要是对于其他组件内容一屏显示不完整,所以采用分屏显示。- (void)viewDidLoad{    [superviewDidLoad];        UIScrollView *scrol=[[UIScrollViewalloc]init];    //可视范围

2014-02-06 20:19:53 6740

原创 UIImage两种加载方式

UIImage是我们操作图片的一个类,而我们经常用UIImage imageNamed:@“图片名”获取一张图片,这种方法会找资源包中下的图片,加载一次后就一直在缓存中,性能比较好,而另外一种方法[[UIImage alloc] initWithContentsOfFile:@"全路径"]每次都会通过全路径获取图片。类型是否有缓存使用场合UIImage

2014-02-05 19:20:15 3814

转载 after modifying system headers, please delete the module cache

XCode5中出现如下报错信息:fatal error: file '/Applications/Xcode.app/Contents/Developer/Platforms/iPhoneOS.platform/Developer/SDKs/iPhoneOS7.0.sdk/System/Library/Frameworks/UIKit.framework/Headers/UIVie

2014-02-05 18:47:11 1725

原创 时间处理控件UIDatePicker与UIPickerView

UIDatePicker依然继承自UIControl是经常用到的一个时间控件,方便我们用户输入日期.让控制器监听值发生改变#import @interface cooljuneViewController :UIViewController UIPickerViewDataSource,UIPickerViewDelegate>- (IBAction

2014-02-05 16:35:25 4686

转载 Xcode5.0下iOS6和IOS7切换使用

xcode5.0创建的项目默认是IOS7的,我们同时经常要看IOS6中显示效果,可以用以下方式Build 输入arm 然后选择 armv7,armv7s  完美解决Build 输入arm 然后选择 armv7,armv7s  完美解决

2014-02-05 14:10:21 1221

原创 UI控件的位置操作

在一个UI控制器中先有一个大的VIEW,我们可以通过[self.viewsubviews]获取控制器上所有的子组件,而组件的位置参照物都是父控件。我们常用到的修改组件的位置属性有frame、bounds、bounds、transform,值得注意的是,这些属性都是结构体,而苹果不允许我们直接修改属性结构体里面成员的值,一般都需要先取出来这个结构体,对这个结构体修改,再把结构体赋值给原来的属性,

2014-02-05 12:22:43 1640

原创 UI基础控件一

UIImageView、UILabel比较轻量级,因为大多数都做展示使用,并不需要什么特殊的操作,没有像UIButton类的组件继承UIControl,所以拥有的事件也比较少,而UISlider、UIStepper、UISwitch这些常用的操作性的控件都继承自UIControl,拥有丰富的事件。控制器头文件#import @interfac

2014-02-05 11:54:47 1305

原创 利用NSBundle加载资源文件

用NSBundle可以加载项目中的资源文件,比如plist文件或者xib等文件,只需要指定文件名和类型即可 .加载plist文件    //加载plist文件   NSBundle *bunle=[NSBundlemainBundle];    //根据文件类型和文件名加载plist文件   NSStrin

2014-02-05 11:41:27 3271

原创 UiButton操作

UIButton继承自UIView,虽然界面上的组件都继承自UIView,如果这个组件拥有丰富的事件那么肯定就要继承自UiView的一个子类UIControl,那么像UILable、UIImage这些轻量级组件都没有继承这个类,所以他们拥有的事件操作很少。初始化一个Button -(void) initWithRedBlock{    //初始化块   

2014-02-04 14:59:20 1527

原创 UI组件缩放和旋转

旋转(注意:值是一个180°PI为单位)#pragma mark 改变组件角度旋转- (IBAction)rotationBlock:(UIButton *)sender {    [UIViewbeginAnimations:nilcontext:nil];    [UIViewsetAnimationDuration:.8]; 

2014-02-04 14:50:21 998

原创 IOS之UI添加动画

UIView提供了类方法beginAnimations开始一个动画,这种写法很像Java中jdbc中提交一个事务一样。    [UIViewbeginAnimations:nilcontext:nil]; //设置动画开始    [UIViewsetAnimationDuration:.8];//设置动画时间//动画操作   

2014-02-04 14:46:36 889

原创 第一个UI界面

IOS提供的UI组件很像C#,很多控件都拖动再绑定事件就可以了,但是毕竟系统很死,生成的东西比较死板,所以我们也要经常自己手动写。在我们创建一个项目后,系统会自动生成一个视图控制器(ViewController),如果你想操作视图控制器上的组件,比如添加事件,那么就应该让视图控制器持有界面上的组件,而主面板(Main.storyboard),Main.storyboard也就是我们程序进入后的第一

2014-02-03 12:04:22 1465

原创 copy语法

OC提供了强大copy语法,让我们copy一个对象作为副本,改变副本对象而不影响原来的对象,而copy分为深拷贝也就是内容拷贝,用于可变类型的拷贝,拷贝之后会产生新的对象,计数器为1,还有就是浅拷贝也就是地址拷贝,用于不可变的对象拷贝,因为对象本身不可变,在copy的时候,源对象会被直接返回并不会创建新的对象,拷贝后计数器加1。只有不可变对象copy为不可变对象的时候才是浅拷贝。

2014-02-02 15:43:18 1572

原创 NSObject常用方法

NSObject相当于Java中的基类object。 Student *stu=[[[Studentalloc]init]autorelease];        //返回对象的所有信息        Class c=[stu class];//Class c=[Student class];        //判断对象是否属于某个类的实例

2014-02-02 13:38:56 890

原创 NSDate的使用

NSDate是OC中的时间类型,和Java中的Date一样,而对时间进行格式化处理的NSDateFormatter就像Java中simpledateformat,对时间进行格式化输出或者对一个字符串时间转换成时间格式。基本使用NSDate *date=[NSDatedate];       NSLog(@"date=%@",date);

2014-02-02 12:09:59 1280

原创 NSValue与数据类型

NSValue可以包装所有的数据类型,而前一篇博客写到的NSNumber也是继承自NSValue,在API中我们可以发现,实际上是用了分类进行了扩充,因为集合中需要的是OC对象,所以我们使用的基本数据类型和结构体都可以使用NSValue进行包装,再丢给集合。 CGPoint p=CGPointMake(20,10);        //@encode(C

2014-02-02 11:38:01 1098

原创 集合使用NSArray、NSSet、NSDictionary的使用

NSArra继承自NSobject对象,为了解决存储不同类型的多个元素,其实更像是Java中的List,只能放OC对象,不能直接存放基本数据类型,也不能存放空值,不可变 ,arrayWithObjects这个方法初始化数组的时候里面的nil值不能删除,代表数组终止标记,不是数组元素。基本使用和循环void array(){    //只能放OC对象,不能

2014-02-01 19:23:36 2950

原创 NSMutableString的使用

NSMutableString是oc中的可变字符串和Java中的stringbuilder一样,如果你要经常修改一个字符串的内容,那么最好使用NSMutableString,这样性能更高void mutbaleString(){    NSMutableString *str=[NSMutableStringstringWithFormat:@"cooljune

2014-02-01 16:45:38 1309

原创 oc中的常用结构体

OC中的很多类型都是对一个或多个类型进行包装再组合成一个新的结构体,在用typedef起一个别名,然后就变成了新的类型,当然在开发中,我们自己也会定义很多的结构体。/**常用结构体**/void structTest(){    /******范围******/    //    typedef struct _NSRange {    //

2014-02-01 15:50:17 2226

原创 NSString使用

NSString继承自NSObject对象,在OC中作为字符串类型,就像Java中的string一样,值得注意的是:系统自带的对象都有一个和对象方法相同的类方法完成相同的功能,也就是说有一个静态方法和一个动态方法,而且静态方法不用我们管理内存,所以开发中都用静态方法。基本使用和文件读取void createString(){    NSString *s

2014-02-01 15:40:31 1242

原创 ARC兼容NoARC

在xcode5.0以后,我们创建的项目默认就是ARC项目,如果要改为NoARC,只需修改automatic reference counting 为NO就可以了,Xcode也为老的arc项目提供了便捷,一键转为arc项目。我们点中项目然后,点击edit-->Refactor(重构)-->convert to objectc arc,这种重构方式相当于xcode会取检测代码中的内存管理代码,然后

2014-02-01 09:54:08 1337

原创 ARC使用和注意点

ARC(Automatic reference counting)管理,是为了提高开发者的效率,节省编写内存管理的代码,让开发者更关心自己的业务,并没有真正的自动内存管理,而是编译器在编译前会检查代码,判断对象是否被强指向,如果有指针强指向这个对象,那么这个对象就不会被回收。区别强指针和弱指针分别用__strong和__weak,默认所有对象的指针都是强指针,而在我们对象模型构建的时候,如果一

2014-01-31 19:27:53 1394

原创 block和指针函数

block代码块和指针函数在定义上只有一个符号的细微差别,至于灵活性和使用场景,具体问题具体分析,block比较灵活。#import #import "Student.h"int sumAb(int a,int b){   return a+b;}void testBlock(){    //定义一个block类型   

2014-01-31 16:20:45 886

原创 block代码块

block代码块看起来语法很怪异,简单来说它就是一个很灵活的代码块,在你想调用的时候在调用。#import @class Button;typedefvoid (^ButtonBlock) (Button *btn);@interface Button :NSObject@property (nonat

2014-01-29 17:33:33 796

原创 protocol协议

oc中的协议很像Java中的接口,定义一组约定俗成的规范,让其他类来实现,而protocol主要是为了监视这个对象的活动信息,这样看起来到像是数据库端的触发器了,一旦满足某个规则,我就执行某个事件。#import @class MessageCenter;//定义一个消息中心的协议@protocol MessageDelegate NSObjec

2014-01-29 16:40:55 1335

原创 OC与Category 分类

Category 分类,动态为已经存在的某个类动态添加方法,为以前的类扩展方法,但是不能添加成员变量,实现了类的相关方法的模块化,把不同的类的方法分配到不同的分类文件中,就像在Java开发中的struts或者spring配置文件模块化一样,便于分模块开发,并且可以扩展OC基础类库中的类。#import@interface Student :NSObject

2014-01-29 10:52:42 1268

原创 @autoreleasepool内存管理

虽然OC提供了@autoreleasepool这样方便快捷管理内存的方案,但它并不像Java一样能够全自动化,很多时候还是需要我们自己手动释放内存。自动释放池是OC里面的一种内存回收机制,一般可以将一些临时变量添加到自动释放池中,统一回收释放,当自动释放池销毁时,池里面的所有对象都会调用一次release,也就是计数器会减1,但是自动释放池被销毁了,里面的对象并不一定会被销毁。

2014-01-29 10:15:59 1746

空空如也

空空如也

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

TA关注的人

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