分享

专题:iOS开发之常见疑难问题解决方案大荟萃

 最初九月雪 2015-04-08

DatePicker 获取时间的时区问题

实现日期选取器:

想在每次加载软件的时间都能将选取器加载到当前的日期和时间,需要在viewDidLoad中创建一个新的NSDate对象,通过这种方式创建这个对象包含当前的时间和时间。然后将datePicker设置为该日期,这样就可以确保每次从nib中加载此视图时,选取器都会重置为当前得日期和时间..

  1. -(void)viewDidLoad{ 
  2.     NSDate *now = [[NSDate alloc]init]; 
  3.     [datePicker setDate:now animated:NO]; 
  4.     [now release]; 
  5.   

然后在你需要获取日期的方法中:

  1. NSDate *selected = [datePicker date]; 
  2.   

你可以获取到当前0时区的时间,如果需要设置日期的格式需要添加如下的格式订制:

阅读全文

TabBar图片不显示的原因

开始使用ios中的UITabBarController,在给Tab Bar Item设置自定义图片的时候,遇到了问题

 

按照如下配置:

 

阅读全文

iOS横竖屏解决方案

ios横竖屏的效果是不相同的,所以我们在开发中如果允许屏幕横竖屏间的切换,那么我们就要调整视图的布局。利用Interface Builder开发,我们可以快速的拖拽出合适的界面布局,但是屏幕自动切换布局不能很好的适配,下图是,没有做任何调整的状态下,实现的横竖屏切换,可以看到界面不是很美观。

image39.pngimage40.png

目前我所知的实现ios横竖屏切换的解决方案共有三种:

1.利用Interface Builder适配器自动适配调整界面。

阅读全文

atomic与nonatomic,assign,copy与retain的定义和区别

atomic和nonatomic用来决定编译器生成的getter和setter是否为原子操作。

atomic

 

设置成员变量的@property属性时,默认为atomic,提供多线程安全。

阅读全文

iPhone图片拉伸的几种方法

系统至ios6之后,关于图片拉伸的方法已经扩展至3个函数:

1.ios4提供的方法:

  1. - (UIImage *)stretchableImageWithLeftCapWidth:(NSInteger)leftCapWidth topCapHeight:(NSInteger)topCapHeight 

这个函数是UIImage的一个实例函数,它的功能是创建一个内容可拉伸,而边角不拉伸的图片,需要两个参数,第一个是不拉伸区域距离左边框的宽度,第二个参数是不拉伸区域距离上边框的宽度,其操作本质是对一个像素的复制拉伸,故没有渐变效果,这也是其缺点所在。

参数的意义是,如果参数指定10,5。那么,图片左边10个点,上边5个点。不会被拉伸,x坐标为11的点会被横向复制,y坐标为6的点会被纵向复制。注意:只是对一个点像素进行复制到指定的宽度。

阅读全文

iPhone获得User-Agent(UA)信息的方法

如果你需要获取Android手机的UA信息,请移步这里Android获得UA信息的方法

iPhone中取到UA信息的方法如下:

1.利用浏览器控件UIWebView建立一个http请求

2.在请求建立的期间, 建立一个新的事件循环用来判断UA信息是否已经建立

阅读全文

Objective-C学习之NSDate简单使用说明

object-c基础语法NSDate, 主要学习NSDate的设置、获取当前时间、当前时间加减秒后的时间、日期比较、日期转换成NSString等

XCode4.6.3,OS X SDK 10.8; NSDate日期操作,获取当前日期,日期比较,日期格式,日期推算,时差解决办法等 。

 

 

阅读全文

iPhone开发关于UDID和UUID的一些理解

一.UDID(Unique Device Identifier) 

UDID是Unique Device Identifier的缩写,中文意思是设备唯一标识. 

在很多需要限制一台设备一个账号的应用中经常会用到,在Symbian时代,我们是使用IMEI作为设备的唯一标识的,可惜的是Apple官方不允许开发者获得设备的IMEI. 

ios5 sdk中的获取方法: 

阅读全文

利用操作队列和信号量来实现操作同步

最近在开发iOS过程中遇到一个问题:某一些操作需要在一个初始化操作后才允许执行。但是这些操作的执行时刻有可能比初始化操作来得要快。那么,如果不等待初始化操作后再执行的话,这些操作就等于是丢失了。

针对这个问题,我想到了两种解决方案:第一就是执行这些操作之前先判断是否已经初始化,如果尚未初始化则使用一个数组队列把操作参数及调用的方法存储起来,等待初始化完成后再检测数组队列中的保存的操作进行调用并清空队列。但这种方式有个问题就是操作中传递的参数以及调用方法引用都需要自己来维护,这无疑是给自己带来了一定的工作量以及风险,稍有不慎就有可能会导致内存泄露。

因此第二中解决方法就是利用串行队列结合信号量的方式来控制操作的执行。此方案的思路是,先创建一条串行队列,此队列用于执行所有的操作。但是最先入队的是一个等待信号的操作。而这个信号的初始值是0,直到初始化操作完成后才会发送一个信号来通知此操作。因此,在尚未初始化完成的时候此队列是一直处于阻塞状态的。所以到有操作进入队列时都会立刻执行,而是需要等到初始化信号过来后才开始执行。

为了验证这一想法,我新建了一个应用工程,在ViewController中定义了操作队列_quque和信号量_sema,如下:

阅读全文

10 iOS何时使用self.

大多数的答案是:“这与objc的存取方法有关”

怎么样才能有关呢?接下来通过几个小例子来看一下。

首先我们创建一个学生类:Student类

这个学生类里有学生的id和学生的姓名name

阅读全文

11 在iOS中使用第三方类库

方法一:直接复制所有源文件到项目中

这种方法就是把第三方类库的所有源文件复制到项目中,直接把所有.h和.m文件拖到XCode项目中即可。如果第三方类库引用了一些系统自带类库,那么在项目中还需要额外引用那些类库。

如果当前的项目启用了ARC,而引用的第三方类库未使用ARC,那还需要在项目信息的Targets – Build Parses里找到第三方类库的.m文件,并为它们加上-fno-objc-arc标记。

而对于在未启用ARC的项目用引用使用了ARC的第三方类库,则需要为第三方类库的.m文件加上-fobjc-arc标记。

阅读全文

12 iPhone开发之多线程NSThread和NSInvocationOperation

多线程编程是防止主线程堵塞,增加运行效率等等的最佳方法。而原始的多线程方法存在很多的毛病,包括线程锁死等。在Cocoa中,Apple提供了NSOperation这个类,提供了一个优秀的多线程编程方法。

本次介绍NSOperation的子集,简易方法的NSInvocationOperation:

 

 

阅读全文

    本站是提供个人知识管理的网络存储空间,所有内容均由用户发布,不代表本站观点。请注意甄别内容中的联系方式、诱导购买等信息,谨防诈骗。如发现有害或侵权内容,请点击一键举报。
    转藏 分享 献花(0

    0条评论

    发表

    请遵守用户 评论公约

    类似文章 更多