存档

‘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 标签: ,