buy online retin-a overnight without rx, and buy cheap amoxil purchased online without prescription, and buying cheap premarin with free fedex overnight, and buying cheap diflucan (fluconazole) cod saturday delivery, and buy online taking too much synthroid medication, and cheap pharmacy clomid twin, and purchase with no prescription order zovirax (acyclovir) creditcard, and order online buy generic wellbutrin cheap no membership, and cheap online will generic available valtrex in toronto, and cheap pharmacy order cheap order propecia online, and order online no prescription hydrochlorothiazide online pharmacy, and pharmacy cheapest accutane ultrum, and pharmacy cheapest cheap doxycycline without rx, and ordering online where to buy norvasc, and buy cheapest prozac for sale cod, and buy online where can i buy flagyl online, and buying cheap acyclovir xr purchase online cheap, and purchase with no prescription forum paxil, and ordering online best buy lipitor, and buy cheapest arimidex buy without a prescription, and pharmacy cheapest bactrim overnight delivery cheap, and generic medications buy neurontin online no membership, and order cheap baclofen side effects, and order online price zithromax, and pharmacy cheapest where to buy lasix without a prescription, and

存档

‘Apple’ 分类的存档

iOS delegate 页面刷新技巧,传值传事件

2015年7月24日 没有评论

先看两张图片:

Snip20150724_2Snip20150724_1

在ios开发的时候都会遇到这样一个问题:数据列表显示在first这个页面上,在second页面添加了数据,切换回first页面的时候,新加入的数据还没有同步,这时有的app会自动执行刷新动作,或则由用户手动刷新,那如何在second添加数据之后马上刷新first页面的数据呢?接下来就讲下这个技巧。

一个比较重要的类:Manager,可以叫单例类,或则叫单件类(叫法很混乱)。它有一个static对象,这就是为什么它叫单例的原因。这个对象的作用是,当在second页面中点击+这个button的时候,会通过这个对象调用一个函数如下:

-(void)addDate

{

NSTimeInterval time = [[NSDate date] timeIntervalSince1970];

NSString* string = [NSString stringWithFormat:@”%f”,time];

[self.firstDateSource refreshData:string];

}

这个函数的功能是去触发refreshData这个事件,并且把数据string传过去,也就是让first页面刷新数据的页面。当然这个函数与first页面看起来没有什么联系。那看看Manager的头文件如下:

@protocol FirstDelegate <NSObject>

@required

-(void)refreshDate:(NSString*)str;

@end

@interface Manager : NSObject

@property(nonatomic,assign)id<FirstDelegate> firstDataSource;

+(Manager*)SharedManager;

-(void)addDate;

@end

可以看到头文件里面定义了一个FirstDelegate的firstDateSource(delegate的基本用法就不在赘述),在first页面里面设置firstDataSource = self,并且函数refresh属性为required,需要在first页面实现这个函数。这样就解决了上面的问题,当刷新数据的时候会触发first页面中的这个函数实现数据刷新。

这样当点击加按钮的时候,数据被加上去了,切换回first页面数据已经刷新。

Snip20150724_6Snip20150724_5

 

这里用的是模拟数据的方式实现这个技巧。接下来说当有服务器的时候,当点击+button的时候改变服务器数据,完成之后调用manager的addata函数,这里去请求服务器的数据(已经改变的数据),然后触发refreshData,将服务器回来的数据列表当作例子中的string传如到first页面。这样就解决了服务器数据改变,不管现在程序在哪个页面,都会触发刷新数据,然后更新first页面,也就增加了数据同步的用户体验。

 

demo git下载地址:http://code.huihoo.com/ios-modules/delegatedemo

分类: Apple 标签:

在 iOS 中使用 OpenSSL 库

2012年6月8日 没有评论

手机安全对OpenSSL的依赖很高,值得大家深入研究。

我试着在MacBook Air编译OpenSSL库,并在iOS设备中使用。

系统配置:MacBook Pro, Mac OS X 10.7.3, 1.7 GHz Intel Core i5, 4GB 1333 MHz DDR3,

安装了 Xcode 4.2.1, MacPorts 2.0.4 先这样编译下,下载openssl源代码包,如openssl-1.0.1b 在用户主目录创建 mkdir ssllibs 看看openssl支持哪些平台: ./Configure // 注意大写C

可以看到openssl支持:android、android-armv7、android-x86、iphoneos-cross等移动平台

./Configure darwin64-x86_64-cc –openssldir=/Users/<username>/openssl-1.0.1b

make & make test & make install

cd /Users/<username>/openssl-1.0.1b/bin ./openssl version OpenSSL 1.0.1b 26 Apr 2012 哈,编译成功。

因为所有的 iOS 设备都使用 ARM 架构处理器,iPhone4支持armv6, armv7指令集,所以在openssl-1.0.1b.tar.gz的目录下创建以下目录: mkdir openssl_armv6 openssl_armv7 openssl_i386

./configure BSD-generic32 –openssldir=/Users/<username>/openssl-1.0.1b/openssl_i386 vim makefile 将CC= gcc修改为 CC= /Developer/Platforms/iPhoneSimulator.platform/Developer/usr/bin/gcc -arch i386

在CFLAG = 后面紧跟 -isysroot /Developer/Platforms/iPhoneSimulator.platform/Developer/SDKs/iPhoneSimulator5.0.sdk/

然后make & make install openssl_i386/lib目录下 生成 libcrypto.a 和 libssl.a ,编译成功。

先将编译好的 i386 库保存到 ssllibs 目录 mv openssl_i386 ssllibs/

同样的步骤编译 armv6, armv7

./configure BSD-generic32 –openssldir=/Users/<username>/openssl-1.0.1b/openssl_armv6

./configure BSD-generic32 –openssldir=/Users/<username>/openssl-1.0.1b/openssl_armv7

CC= /Developer/Platforms/iPhoneOS.platform/Developer/usr/bin/arm-apple-darwin10-llvm-gcc-4.2 -arch armv6

CC= /Developer/Platforms/iPhoneOS.platform/Developer/usr/bin/arm-apple-darwin10-llvm-gcc-4.2 -arch armv7 -isysroot /Developer/Platforms/iPhoneSimulator.platform/Developer/SDKs/iPhoneSimulator5.0.sdk/

make & make install

mv openssl_armv6 ssllibs/

mv openssl_armv7 ssllibs/

思路是这样的,但因为OpenSSL、Xcode、iOS的版本不同,可能会出现一些问题。

编译openssl-1.0.1c,

创建:openssl_arm 目录,修改Makefile

CC= /Developer/Platforms/iPhoneSimulator.platform/Developer/usr/bin/llvm-gcc

CFLAG= -isysroot /Developer/Platforms/iPhoneSimulator.platform/Developer/SDKs/iPhoneSimulator5.0.sdk

修改 crypto/ui/ui_openssl.c

static volatile sig_atomic_t intr_signal;

static volatile int intr_signal;

make, make install 成功,openssl_arm/lib 目录下生成:libcrypto.a libssl.a

现在,直接从 OpenSSL for iPhone 中获得OpenSSL和iPhone应用。

git clone https://github.com/x2on/OpenSSL-for-iPhone.git

cd OpenSSL-for-iPhone ./build-libssl.sh cd src/openssl-1.0.1b cat Makefile 你会看到以下信息: PLATFORM=BSD-generic32 CC= /Developer/Platforms/iPhoneSimulator.platform/Developer/usr/bin/gcc -arch i386 CFLAG=-isysroot /Developer/Platforms/iPhoneSimulator.platform/Developer/SDKs/iPhoneSimulator5.1.sdk…

你需要下载Xcode4.3的版本,因为我的Xcode4.2.1是iPhoneSimulator5.0.sdk 下载Xcode 4.3.2 for Lion.dmg(1.85 GB)

接下来,你就是make & make install

在Xcode中打开OpenSSL-for-iOS.xcodeproj 项目 把Xcode更新到4.3.2,Mac OS X更新到10.7.4 编译此项目出现错误:ld: library not found for -lcrypto clang: error: linker command failed with exit code 1 (use -v to see invocation)

把刚才编译好的libcrypto.a libssl.a 拷贝到 OpenSSL-for-iPhone/lib 目录下,重新编译,编译成功 :)

参考资料:

分类: Apple, Security & Identity 标签: ,

iOS 5 正式发布

2011年10月13日 没有评论

苹果iOS 5已正式发布,你需要将iTunes更新至10.5,然后通过iTunes更新你的iOS 5。

iOS 5 新增加了 200 多个新功能,其中包括:

通知

  • 从任意屏幕的顶部向下推送,即可在“通知中心”集中查看所有通知。
  • 新收到的通知会短时间显示在屏幕顶部
  • 可从锁定的屏幕查看通知
  • 将通知应用程序图标从锁定的屏幕的左侧滑到右侧,即可直接前往该应用程序

iMessage

  • 可与其他 5 位 iOS 5 用户收发不限量的文本信息、照片信息和视频信息。
  • 可查阅送达回执和已读回执来跟踪信息的状态
  • 群发信息和安全加密
  • 可在蜂窝网络和无线局域网中使用*
  • 报刊杂志
  • 在“主屏幕”上自动整理订阅的报纸杂志
  • 显示最新一期报纸杂志的封面
  • 在后台下载新一期报纸杂志

用“提醒事项”来管理待办事项

  • 与 iCloud、iCal 和 Outlook 同步
  • 在您离开或到达某一个位置时发送基于位置的提醒(适用于 iPhone 4S 和 iPhone 4)

内建对 Twitter 的支持

  • 只需在“设置”中登录一次,就可直接从“相机”、“照片”、“地图”、Safari 和 YouTube 发送推特信息
  • 可将位置信息添加到任何推特信息中
  • 在“通讯录”中显示 Twitter 个人资料中的图片和用户名

增强了配备相机的设备中的相机功能

  • iPhone 4S、iPhone 4、iPhone 3GS 和 iPod touch(第四代)处于睡眠状态时,连按两次主屏幕按钮,即可快速调用相机
  • 可使用调高音量的按钮来进行拍摄
  • 拍照时可选用网格线来提供坐标参考
  • 在预览屏幕上捏合或张开手指可缩放图像
  • 可推送预览屏幕来查看相机胶卷中的照片
  • 轻按一下并按住可锁定聚焦和曝光,iPad 2 和 iPod touch(第四代)仅支持锁定曝光

增强了配备相机的设备中的照片功能

  • 裁减与旋转
  • 移除照片红眼
  • 轻按一下即可改善照片
  • 将照片整理成相簿

增强了 Mail 功能

  • 可将邮件的文本格式设置为粗体或斜体,或者给文本添加下划线
  • 可控制缩进级别
  • 可拖移地址栏中的名字以重新排列
  • 将邮件标记为有旗标
  • 同时将大量邮件标记为旗标、已读或未读
  • 自定邮件的提醒声音
  • S/MIME(安全多用途网际邮件扩充协议)
  • 改进了日历功能
  • iPad 上的年视图,和 iPhone 与 iPod touch 上新的周视图
  • 轻按一下即可创建事件
  • 查看与添加事件附件

增强了 Game Center 功能

  • 可将您的个人照片用于您的 Game Center 帐户
  • 对比您与朋友的总体成就得分
  • 通过交友推荐和朋友的朋友在 Game Center 结交新朋友
  • 通过自定的游戏推荐来发现新游戏

iPad 2 和 iPhone 4S 上新增“AirPlay 镜像”功能

适用于 iPad 的多任务手势

  • 四指或五指捏合来前往“主屏幕”
  • 向上推送来显示多任务栏
  • 左右推送来切换应用程序

使用“设置助理”直接在设备上进行设置、激活和配置

无需连线电脑共享网络,即可以无线方式更新软件

支持 iCloud

  • iTunes 云服务
  • 照片流
  • 文档云服务
  • 可自动下载应用程序和图书,并保留购买历史记录
  • 备份
  • 通讯录、日历和邮件
  • 查找我的 iPhone

重新设计了 iPad 上的“音乐”应用程序

每小时天气预报

实时股票报价

无线同步到 iTunes

改善了键盘功能

  • 可拆分 iPad 键盘
  • 提高了自动改正的准确性
  • 改进了中文和日文的输入法
  • 新的表情符号键盘
  • 新增用户词典,可用于自动改正
  • 可选择为常用字词创建可扩展的键盘输入码

增强了辅助功能

  • 在 iPhone 4S 和 iPhone 4 上,可选择在接收来电或收到提醒时闪烁 LED
  • 可在 iPhone 上自定来电的振动模式
  • 增加了新的界面,方便有行动障碍的用户通过专用的输入设备来使用 iOS
  • 可朗读选定的文本内容
  • 自定 VoiceOver 的元素标签

增强了 Exchange ActiveSync

  • 无线同步任务
  • 将邮件标记为有旗标、已读或未读
  • 加强了离线支持
  • 存储来自 GAL 服务的新联系人信息

新增 1,500 多个开发人员 API

错误修复

与本软件更新兼容的产品:

iPhone 4S

iPhone 4

iPhone 3GS

iPad 2

iPad

iPod touch(第四代)

iPod touch(第三代)

* 可能要缴纳正常的运营商数据收费。iMessage 不可用时,信息将以 SMS 短信方式发送,可能要缴纳运营商信息收费。

若要进一步了解本更新的安全性内容,请访问此网站

分类: Apple 标签: ,