当前位置:  编程技术>移动开发
本页文章导读:
    ▪Objective-C基础教程总结        Objective-C基础教程小结 这本书是看的第2遍了,再写了一些iphone应用程序后,再看这本书很都都游刃有余了。作为iphone-dev分享计划的一步,再把这本小结一下。下一步是整理Stanford的那个iphone .........
    ▪ Cocoa框架学习札记        Cocoa框架学习笔记        iPhone,Safari,Mail都是Cocoa应用程序。运行环境上呈现Aqua用户界面和Mac OS其他可视部分(Finder,Dock等)集成。开发方面Cocoa是面向对象的软件组件-类-的集成套件。适合.........
    ▪ java 兑现md5加密       java 实现md5加密 import java.security.MessageDigest;import java.security.NoSuchAlgorithmException;public class MD4 { private static String Md5(String plainText ) { try { MessageDigest md = MessageDigest.getInstance("MD5"); md.update(pl.........

[1]Objective-C基础教程总结
    来源: 互联网  发布时间: 2014-02-18
Objective-C基础教程小结

这本书是看的第2遍了,再写了一些iphone应用程序后,再看这本书很都都游刃有余了。作为iphone-dev分享计划的一步,再把这本小结一下。下一步是整理Stanford的那个iphone iTune U教程。

 

对C的扩展:
  • Obj-C只是增加了一点“特殊语料”的C语言,所以可以用printf()代替NSLog()。但我们建议使用NSLog,因为它添加了特性,例如时间戳,日期戳和自动附加换行符(‘\n’)等。
  • 使用NSLog()输出任意对象的值时,都会使用%@格式说明。在使用这个说明符时,对象通过一个名为description的方法提供自己的NSLog()格式。
面向对象编程基础知识:
  • id是一种泛型,用于表示任何种类的对象。id实际上是一个指针,指向其中的某个结构。
  • obj-c编程风格建议开发人员使用首字母大写的类名。引用对象的obj-c变量通常不需要首字母大写。
  • 在obj-c中只要看到@符号,你都可以把它看成是c语言的扩展。
  • @implementatiion是一个编译器指令,表明你将为某个类提供代码。类的实现方法不必按照@interface指令中的顺序出现。你 甚至可以在@implementation中定义那些在@interface中无相应声明的方法。可以把它们看成是私有方法,仅在类的实现中使用。
  • 你也许认为,既然单独在@implementation指令中定义方法,就不能从该实现之外访问该方法。但事实并非如此,Objctive-C中不存在真正的私有方法。也无法把某个方法标识为私有方法,从而禁止其他代码调用它。这是obj-c动态本质的副作用。
继承:
  • obj-c不支持多继承。如果你尝试在obj-c中使用多继承(多继承的形式可能类似于以下语句),编译器将不能正常识别它们:@interface Circle : NSObject, PrintableObject
  • super既不是参数也不是实例变量,而是由obj-c编译器提供的某种神奇功能。向super发送消息时,实际上是在请求obj-c向该类的超类发送消息。如果超类中没有定义该消息,obj-c将按照通常的方式在继承链中继续查找对应的消息。
复合:
  • getter方法则仅仅根据其返回的属性的名称来命名。不要将get用做getter方法的前缀。get这个词在Cocoa中有着特殊的含义。如 果get出现在Cocoa的方法名称中,就意味着这个方法会通过你当作参数传入的指针来返回数值。例如NSData中有一个getBytes:的方法,它 的参数就是用来存储字节的内存缓冲区的地址。
XCode:
  • 选择File > Make Snapshot (command + control + S),Xcode会记住项目当前的状态。现在你就可以放心地编辑源文件,可以随心所欲的“破坏”的项目。如果你意识到犯了一个严重的错误,可以通过 File > Snapshot 打开快照窗口,这样就可以从前一个快照恢复项目了。在你做任何冒险的事情之前最好先创建一个快照。
  • 打开“研究助手”,选择help > show research assitant。
  • 如果想直接访问苹果公司的官方API文档,最快的方法是按住option键并双击某个符号,这是查找该符号相关文档的快捷方式。
  • 快捷键:
  • Command + Shift + E :扩展编辑器
  • Command + [ :左移代码块
  • Command + ] :右移代码块
  • Tab :接受代码提示
  • Esc :显示代码提示菜单
  • Ctrl + . (句点):循环浏览代码提示
  • Shift + Ctrl + . (句点):反向循环浏览代码提示
  • Ctrl + / :移动到代码提示中的下一个占位符
  • Command + Ctrl + S :创建快照
  • Ctrl + F :前移光标
  • Ctrl + B :后移光标
  • Ctrl + P :移动光标到上一行
  • Ctrl + N:移动光标到下一行
  • Ctrl + A : 移动光标到本行行首
  • Ctrl + E : 移动光标到本行行尾
  • Ctrl + T :交换光标左右两边的字符
  • Ctrl + D:删除光标右边的字符
  • Ctrl + K :删除本行
  • Ctrl + L : 将插入点置于窗口正中
  • Command + Alt + D:显示open quickly 窗口
  • Command + Alt + 上方向键 :打开配套文件
  • Command + D :添加书签
  • Option + 双击:在文档中搜索
  • Command + Y :以调试方式运行程序
  • Command + Alt + P : 继续(在调试中)
  • Command + Alt + 0 :跳过
  • Command + Alt + I :跳入
  • Command + Alt + T :跳出
Foundation Kit:
  • NSString的length方法能准确无误的处理国际字符串,如含有中文或者日文字符的字符串,以及使用Unicode国际字符标准的字符串。
  • NSString的hasPrefix和hasSuffix方法。
  • NSEnumerator,使用array objectEnumerator获取一个迭代器,如果想要从后向前浏览集合,还有一个方法reverseObjectEnumerator可以使用。在 获得枚举器之后,可以开始一个while循环,每次循环都向这个枚举器请求它的nextObject。nextObject返回nil时,循环结束。这也 是不能在数组中存储nil值的另一个原因。我们没有办法判断nil是存储在数组中的数值还是代表循环结束的标志。
  • 你可能很有创造力,试图去创建NSString,NSArray或者NSDictionary的子类。请不要这么做,在一些语言中,你确实会用到 字符串和数组的子类来完成工作。但是在Cocoa中,许多类实际上是以类簇的方式实现的,即它们是一群隐藏在通用接口之下的与实现相关的类。创建 NSString对象时,实际上获得的可能是 NSLiteralString,NSCFString,NSSimpleString,NSBallofString或者其他未写入文档的与实现相关的 对象。
  • 有时确实你需要存储一个表示“这里什么都没有”的值,可以使用[ NSNull null ]
内存管理:
  • 要获得保留计数器的当前值,可以发送retainCount消息。
  • 9.1.3中的例子是和很好的讲内存引用计数的例子。
  • 创建一个自动释放池时,该池自动成为活动的池。释放该池时,其保留计数器值归0,然后该池被销毁。在销毁过程中,该池释放其包含的所有对象。
  • 除了release,你可能见过另一种销毁自动释放池中对象的方式:- drain方法。该方法只是清空自动释放池而不销毁它。-drain方法只适用于Mac OSX 10.4 及更高的版本。在我们自己编写的代码中,我们使用release方法,因为该方法适用于Mac OS的所有版本。
  • 自动释放池以栈的形式实现:当你创建一个新的自动释放池时,它将被添加到栈顶。接收autorelease消息的对象将被放入最顶端的自动释放池中。
  • 如果开发iphone软件,则不能使用垃圾回收。实际上,在编写iphone程序时,苹果公司建议你不要在自己的代码中使用autorelease方法,同时还要避免创建自动释放对象的便利函数。
特性:
  • 可以使用一些其他的声明(如nonatomic),如果不在多线程环境中使用,这些声明可以提高访问器方法的调用速度。台式机的速度已经够快了, 因此通过创建特性的nonatomic声明对于性能的提升实际上不起什么作用,但是iphone开发人员经常使用这种技术在资源有限的设备上获得更好的性 能。如果不希望保留属性的对象,你可以使用assign方法以避免保留周期问题。
  • 在dealloc方法中,我们采用一种高明的技巧:self.name = nil; 这行代码表示使用nil参数调用setName:方法。生成的访问器方法将自动释放以前的name对象,并使用nil替代name。该方法完成了释放 name对象所占用内存的操作。当然,也可以只释放name对象以清理其占用的内存。如果你在dealloc方法以外的地方清除特性,那么使用“将nil 赋值给对象”的方法可以将特性设置为nil,同时可以使我们避免对已释放内存的悬空引用问题。
类别:
  • 类别的局限性:1,无法向类中添加新的实例变量。类别没有位置容纳实例变量;2,名称冲突,即类别中的方法与现有的方法重名。当发生名称冲突的时候,类别具有更高的优先级。你的类别方法将完全取代初始方法,从而无法再使用初始方法。
其他:
  • 可以使用[ NSDate date ]获取当前的日期和时间,它是一个自动释放对象。+dateWithTimeIntervalSinceNow: 接受一个NSTimeInterval参数,该参数是一个双精度值,表示以秒为单位的时间间隔。
  • 有些属性列表文件是以压缩的二进制格式存储的。通过使用plutil命令:plutil -convert xml1 filename.plist ,可以将这些文件转换成人们可读的形式。
  • -writeToFile:atomically: 方法,可用于写入文件。atomically: 参数的值为BOOL类型,用于通知Cocoa是否应该首先将文件内容保存在临时文件中,当文件成功保存后,再将该临时文件和原始文件交换。这是一种安全机 制:如果在保存过程中出现意外,不会破坏原始文件。但这种安全机制要付出一定的代价:在保存过程中,由于原始文件仍然保存在磁盘中,所以需要使用双倍的磁 盘空间。
  • 使用脚本语言作为桥梁,可以获取脚本语言和obj-c两家之长。通过在obj-c和python之间(成为PyObjC),以及obj-c和 Ruby之间(称为RubyObjC)搭建桥梁,这两种脚本语言能够成为obj-c的一类(first class)成员。通过这些桥梁,可以使用python或者ruby设置cocoa子类对象,从而使用cocoa的所有特性。

转自: http://web2.0coder.com


    
[2] Cocoa框架学习札记
    来源: 互联网  发布时间: 2014-02-18
Cocoa框架学习笔记

       iPhone,Safari,Mail都是Cocoa应用程序。运行环境上呈现Aqua用户界面和Mac OS其他可视部分(Finder,Dock等)集成。开发方面Cocoa是面向对象的软件组件-类-的集成套件。适合开发应用程序,命令行工具,插件等, 可以使用多种编程语言。这些类可复用,可支配,可以直接使用或者根据需求扩展。

      主要开发语言Objective-C,是ANSI C的超。在ANSI C语法和语义特性上扩展,支持面向对象。可以将C和Objective-C混合,可以调用非Cocoa编程接口定义的所有函数比如Carbon和BSD。 Cocoa支持C++,Java。定义一个平行的Java类库,实现将Java接口映射到Objective-C实现的桥机制。通过 Python/Objective-C桥进行编程可以使Python对象和Objective-C对象相互传递消息。

      我们可以使用X-code和Interface Builder开发,可以使用Metrowerks的CodeWarrior管理编译调试Cocoa工程或者可以用Emacs编写代码用make file和命令连接编译,在命令行gdb调试。当然Xcode本质也是使用gcc编译gdb调试。

     Cocoa主要框架 :Foundation和Application Kit(图形用户界面部分)框架.动态共享库,头文件,API文档等。

     图1.1

     

                                 图1.1 Mac OS X架构

     图1.2

     

                             图1.2 Cocoa在Mac OS X架构中位置

     图1.2中位于中间层代表包含在Core Services和Application Service两个框架下的系统软件,图中一个层都依赖于下面的其他层。在图1.1中负责Aqua用户界面渲染的系统组件Quartz(Core Graphics框架中实现)是Application Services层的一部分。构架的基础是Darwin,Cocoa在内的Mac OS X各个部分都依赖于Darwin。Cocoa编程接口是应用程序通常需要的基础访问通道。但是如果一些能力在Cocoa接口中找到或在需要更精细的控制, 可以直接使用底层框架。比如Core Graphics,通过调用该框架或OpenGL函数,可以绘出比Cocoa绘画方法更复杂的图像。大多数依赖框架的编程接口是用ANSI C编写的,所以也很方便。Cocoa依赖的或在通过类和方法为之提供访问通道的主要基础框架有:

      Core Foundation,Foundation框架很多类都基于Core Foundation中对应的封装类型。他们之间可以实现类型转换。一些     CoreFoundation 实现又基于Darwin层的BSD部分。

      Carbon,Cocoa使用了Carbon一些服务,Carbon框架在Core Services和Application Services层中定位为系统服务。Cocoa使用了Corbon Core提供的File Manager组件来进行不同文件系统表示之间的转换。

      Core Graphics(Quartz),Cocoa描画和图像处理类基于CoreGraphics类,实现Quartz和窗口服务器组件。

      Launch Services,NSWorkspace类负责向外提供Launch Services。Cocoa使用Launch Services提供的应用程序注册功能和应用程序及文档相关联的图标。

      Print Core,Cocoa的打印类是打印子系统的一个面向对象接口。

      Cocoa还使用Carbon环境的Text Encoding Converter(文本编码转换器)服务来处理一些字符串编码转换。一些Cocoa方法向外提供I/O Kit框架(电源管理),QuickDraw框架(描画),Apple Event框架(Apple Event处理)和ATS框架(字体支持)。

图1.3

     

                                           图1.3   Cocoa架构主要依赖关系

 

    

Foundation框架概述:

      Foundation框架设计目标:为诸如内存管理、对象改变和通告这样的事物定义基本的对象行为和引入一直的规则。通过程序包技术和Unicode字符 串支持国际化和本地化。支持对象的持久保存和分发。在一定程度上独立于OS,以支持移植。为编程的元类型提供对象封装或价物,数值、字符串、集合以及端 口、线程、文件系统等为访问底层系统实体和服务提供的工具类。

      Foundation的几个范式和策略:对象所有权和对象的清除。建立一个对象所有权策略以代替垃圾收集机制。指定对象需要释放自己创建、拷贝、显示保留 的其他对象。自动释放池(NSAutoreleasePool类中定义)实现一种迟缓释放(delayed-release)机制。变体。很多值和容器类 的不可变类都有一个可以修改的变体。可变类的实例从不可变类中继承过来。类簇。是一个抽象类以及一组私有的具体子类的组合。抽象类是这些子类的雨伞接口。 根据不同情况,类簇可以返回适当优化的类实例,比如NSString和NSMutableString就是针对不同的存储需要进行优化的各种私有子类实例 的经纪类。通告是Cocoa主要设计模式。它基于广播机制,使一个对象可以在另一个对象进行某种任务或遇到某情况时,以用户或系统事件的方式得到通告。同 步、异步和分布式通告。有NSNotification、NSNotificationCenter、NSNotificationQueue和 NSDistributeNotificationCenter类实现。

      Foundation框架中的一些类:

Value Objects:NSData类为字节流提供面向对象的存储空间,NSValue和NSNumber类为简单的标量值数组提供面向对象的存储空间。 NSDate、NSCalendarDate、NSTimeZone、NSCalendar、NSDateComponents、NSLocale类提供 了代表时间日期日历地域设置的对象。

Strings:NSString是另一类值对象,负责以null结尾、具有特定编码的字节数组提供面向对象的存储空间。支持utf-8、 UTF-8、MacRoman和其他编码的字符串间转换。NSString还提供字符串检索组合比较以及文件系统路径操作的方法。用NSScanner对 象对NSString对象中数字和词进行解析。NSCharacterSet代表可以在各个NSString和NSScanner方法中使用的一组字符。

Collections:集合。NSArray NSDictionary NSSet NSEnumerator等类在之前学习中涉及到。

OS Services:访问底层操作系统服务,同时又隔离developer和OS。NSProcessInfo查询应用程序环境。NSHost主机在网络中 名称和地址。NSTimer可以按指定时间间隔向其他对象发送消息。NSRunLoop可以管理程序输入源。NSUserDefaults存储全局和用户 级的系统数据库提供编程接口。

File System and URL:NSFileManager为create rename del mov文件操作提供接口。NSFileHandle可以进行底层的文件操作(exp:文件内查找操作)。NSBundle可以寻找存储在程序包中的资源, 可以动态装载某些资源(exp:nib文件,source code)。NSURL和NSURLHandle来表示 访问 管理源于URL的数据。

Interprocess Communication:NSPipe NSPort NSPortMessage代表不同的系统端口套接字和名字服务器,对实现底层IPC有用。NSPipe代表一个BSD管道。

Locking/Threading:NSTread类可以创建多线程程序,lock类为彼此竞争的线程在访问进程资源时提供控制机制。NSTask可以分出一个子进程来执行其他工作或进度检查。

Notifications:它基于广播机制,使一个对象可以在另一个对象进行某种任务或遇到某情况时,以用户或系统事件的方式得到通告。同步、异 步和分布式通告。有NSNotification、NSNotificationCenter、NSNotificationQueue和 NSDistributeNotificationCenter类实现。 Archiving and Serialization归档和序列化:这里的类使对象分发和持久保留成为可能。NSCoder及其子类和NSCoding协议一起可以以独立于构架的 方式来表示对象中包含的数据,可以将类信息和数据一起存储。

Objective-C Language Services:语言服务,NSException和NSAssertionHandler类为代码中的断言和例外处理提供了面向对象封装。 NSInvocation对象是OBJ-C消息的静态表示。NSMethodSignature对象负责记录方法的类型信息,可用于信息的推送。 NSClassDescription是一个抽象类,用于定义和查询类的关系和属性。

Predicates:条件判断类。NSPredicate、NSCompoundPredicate和NSComparisonPredicate类负责对获取或过滤对象的逻辑约束条件进行封装。NSExpression代表条件判断中的表达式。

Dis-Tributed Objects:我们可以通过分布式对象类来进行同台机器或一个网络中的不同机器的进程间通讯。NSConnection NSDISTantObjectRequest NSDistantObejct NSProtocolChecher其中后面两个类继承与NSProxy。其他所有上面的类都继承于NSObject。 Scripting:对AppleScript和Apple Event命令的支持。NSAppleEventManager NSAppleScript等。

 

      Application Kit框架概述 Appliaction Kit框架包含实现图形、事件驱动的用户界面需要的所有对象:窗口、对话框、按键、菜单、滚动条、文本输入框等的。App Kit处理所有细节。高效的进行屏幕描画、营建设备和屏幕缓冲区进行通讯,描画前清除屏幕上的区域已经视图裁剪。大多数App Kit类都是支持类,可以不用直接使用。用IB创建用户界面对象到应用程序控制器对象的连接,控制器对象负责管理用户界面,协调用户界面和内部数据之间的 数据流。可能用到off-the-shelf控制器对象,可能需要实现一个或多个定制控制器类(特别是使用那些类的动作和委托方法)。如果我们都App Kit类和协议熟悉,我们可以以编程方式控制用户界面。也可以通过子类化NSView或在其他类实现自己的对象。

      App Kit有超过125个类和协议组成,都最终都从Foundation框架的NSObject类继承而来。App Kit类都比较宽且浅,从根类开始只有5个超类。最大的分支的根为NSResponder类,负责定义响应者链,对用户事件进行响应的有序的对象列表。 NSApplication、NSWindow、NSView等都继承自它。Exp:我们按键或鼠标点击,系统产生事件,并沿着响应者链向上传递,寻找可 以响应该事件的对象。第二大分支继承自NSCell类,这组类和NSControl类(继承自NSView-NSResponder)的派生类有映像关 系。对负责响应动作的用户界面对象,App Kit采用架构将其工作分为控件对象(control)和单元对象(cell)。NSControl和NSCell类和子类定义一组常见的用户界面对 象,button,slider,browser等。控件对象和一个或多个单元对象相关联,单元对象负责实现描画细节和事件处理。一个button有 NSButton对象和NSButtoonCell对象组成。控件和单元的实现机制为target-action(目标)机制。单元对象可以保留用户点击 时应该发送给特定对象的消息标识信息。用户操作一个控件时,控件从它的单元对象抽出必要信息,并向目标对象发送动作消息。Target-action机制 可以指定目标对象以及应该调用的方法,赋予动作意义。IB中,按Control,鼠标从控件对象拖拽到应用程序或其他对象就可以,也可以编程完成。另一个 设计模式委托(delegation)机制。界面上很多对象,都定义了委托。委托对象代表被委托对象进行各种动作或者与之相互协作。

   

            

      App Kit框架的一些类和协议:

User Interface:全局应用程序对象。NSApplication,每个应用程序都使用一个NSApplication类的单件实例来控制主事件循环, 跟踪应用程序的窗口、菜单,将事件分发给恰当的对象(应用程序本身或者他的一个窗口),建立高级别的自动释放池,接受应用程序级别的事件通告。 NSApplication对象有个委托对象,在应用程序启动或终止、被隐藏或被激活、即将打开用户选择的文件等适合,我们可以定制应用程序的行为,而不 必生成NSApplication子类。 NSWindow and NSView,继承自NSResponder类。可对动作进行响应。NSApplication对象内维护一个NSWindow对象的列表,每个应用的每 个窗口都有一个对象的对象。每个NSWindow对象都维护一些有层次结构的NSView对象。View层次用于窗口内部的描画和事件处理。 NSWindow对象负责窗口级的事件,将其分发给窗口中View对象,并为View对象提供一个描画区域。NSWindow对象也有个委托,用于定制窗 口的行为。NSView是显示在窗口的所有对象的超类。所有NSView子类都借助图形函数描画。drawRect。创建时需要重载该方法。 NSController控制器类是一个抽象类。子类有NSObjectController、 NSArrayController、NSTreeControlller。都是Cocoa绑定实现的一部分。这里实际到模型-视图-设计模式,先前有文 介绍。 NSPanel(面板对话框),是NSWindow子类。显示短暂全局或紧急信息。App Kit中常见对话框有Save Open和Print对话框。 NSMenu、NSMenuItem、NSCursor类负责程序显示给用户的菜单和光标的行为和外观。 NSBox、NSScrollView和NSSplitView类用于为窗口中的视图集合或者其他视图对象提供图形附件。NSBox类将窗口中元素分组, 并为整组元素描画一个边界。NSSplitView类可以在垂直或者水平方向附加一些视图,并为每个视图分配一定的公共区域,用户可滑动控制条来重新分配 视图区域。NSScrollView类及其辅助类SNClipView为用户提供滚动机制。RSRulerView类可以为一个滚动视图添加标尺和标志。 表视图NSTableView类以行列方式显示视图,用于显示数据库记录等。大纲视图 NSOutlineView的实例,NSTableView的子类也提供了一种显示表格数据的方法。 NSBrowser类创建一个显示和漫游层次的数据对象。

      NSTextField和NSFont文本和字体:NSTextField类实现了一个简单的课编辑文本输入框。NSTextView类为更大的文本体提 供编辑特性,是抽象类NSText的子类,定义了扩展文本系统的借口,支持富文本、添附文件、输入管理和按键绑定、标识文本属性,和Font窗口及 Font菜单、段落风格、Clipboard等组件相互协作。还允许通过委托和通告来定制。IB中NSTextField、NSForm、 NSScrollView等都包含了NSTextView对象,我们很少需要编程方式创建。NSTextStroage、NSLayoutManager 和NSTextContainer还可以实现更强大的文本操作。NSFont和NSFontManager类用于封装和管理字体的家族、尺寸和变体。每个 不同的字体,NSFont类定义一个对象与之对应。NSFontPanel类定义了再用户界面上显示的Font窗口。

       NSImage和NSColor:NSImage和NSImageRep负责封装图形数据,可以访问存储在磁盘文件或显示在屏幕的图像。NSColor、 NSColorSpace、NSColorList等类来支持Cocoa的颜色。NSGraphicsContext、NSBezierPath和 NSAffineTransform类实现变量描画、支持图形变换比如缩放旋转转换等。

      NSPrinter、NSPrintPanel、NSPageLayout和NSPrintInfo类可将显示在窗口或视图上信息进行打印和传真,还可以创建NSView的PDF表示。

      NSFileWrapper,NSDocument:NSFileWrapper类创建与磁盘文件或目录对应的对象。将文件的内容保存在内存中,进行显示 修改以及传递给其他程序。还提供了一个图标。也可以通过Foundation中的NSFileManager类访问或枚举文件和目录内容。  

      NSDocumentControoler、NSDocument和NSWindowController类为创建经济与文档的应用程序定义了构架。

      NSInputSever、NSInputManager类和NSTextInput协议为程序提供访问文本输入管理系统的通道。该系统对不懂国际化键盘产生按键进行解析,将正确文本字符传递给文本视图对象。

      OS Services:和其他程序共享数据,NSPasteboard类定义了剪切板。拖拽NSDraggin…协议。拼写检查NSSpellServer类。 

      Cocoa特性: 基本应用程序框架,为事件驱动的行为和应用程序、窗口、工作空间管理提供基础设 施,我们不需要直接处理事件或发送任何描画命令给渲染库;用户面向对象特性,为用户界面提供了很多对象在IB上可以选择,配置属性连接到其他对象 (windows/text fields/radio buttons/drawers/sheets/tab views/table views/browsers/sliders/image views/color wells/combo boxes/text views);系统交互能力,应用程序可以和文件系统、工作空间、以及其他应用交互;提供了多线程、空间时间处理、资源迟缓加载、内存管理、运行操作编程 支持;基于文档的应用能力,脚本处理等特性。


    
[3] java 兑现md5加密
    来源: 互联网  发布时间: 2014-02-18
java 实现md5加密
import java.security.MessageDigest;
import java.security.NoSuchAlgorithmException;


public class MD4 {
private static String Md5(String plainText ) {

try {
MessageDigest md = MessageDigest.getInstance("MD5");
md.update(plainText.getBytes());
byte b[] = md.digest();

int i;

StringBuffer buf = new StringBuffer("");
for (int offset = 0; offset < b.length; offset++) {
i = b[offset];
if(i<0) i+= 256;
if(i<16)
buf.append("0");
buf.append(Integer.toHexString(i));
}

String result=buf.toString();//32位的加密

System.out.println("result: " + buf.toString().substring(8,24));//16位的加密


return result;
} catch (NoSuchAlgorithmException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
return plainText;
}
  public static void main(String[] args) {
String tt="lisi321";
System.out.println(Md5(tt));

}

}

    
最新技术文章:
▪Android开发之登录验证实例教程
▪Android开发之注册登录方法示例
▪Android获取手机SIM卡运营商信息的方法
▪Android实现将已发送的短信写入短信数据库的...
▪Android发送短信功能代码
▪Android根据电话号码获得联系人头像实例代码
▪Android中GPS定位的用法实例
▪Android实现退出时关闭所有Activity的方法
▪Android实现文件的分割和组装
▪Android录音应用实例教程
▪Android双击返回键退出程序的实现方法
▪Android实现侦听电池状态显示、电量及充电动...
▪Android获取当前已连接的wifi信号强度的方法
▪Android实现动态显示或隐藏密码输入框的内容
▪根据USER-AGENT判断手机类型并跳转到相应的app...
▪Android Touch事件分发过程详解
▪Android中实现为TextView添加多个可点击的文本
▪Android程序设计之AIDL实例详解
▪Android显式启动与隐式启动Activity的区别介绍
▪Android按钮单击事件的四种常用写法总结
▪Android消息处理机制Looper和Handler详解
▪Android实现Back功能代码片段总结
▪Android实用的代码片段 常用代码总结
▪Android实现弹出键盘的方法
▪Android中通过view方式获取当前Activity的屏幕截...
▪Android提高之自定义Menu(TabMenu)实现方法
▪Android提高之多方向抽屉实现方法
▪Android提高之MediaPlayer播放网络音频的实现方法...
▪Android提高之MediaPlayer播放网络视频的实现方法...
▪Android提高之手游转电视游戏的模拟操控
 


站内导航:


特别声明:169IT网站部分信息来自互联网,如果侵犯您的权利,请及时告知,本站将立即删除!

©2012-2021,,E-mail:www_#163.com(请将#改为@)

浙ICP备11055608号-3