<?xml version="1.0" encoding="utf-8" standalone="yes"?><rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom"><channel><title>Objective-C on adolsai's echo</title><link>https://adolsai.com/category/Objective-C/</link><description>Recent content in Objective-C on adolsai's echo</description><generator>Hugo</generator><language>zh-CN</language><lastBuildDate>Fri, 02 Apr 2021 17:02:06 +0800</lastBuildDate><atom:link href="https://adolsai.com/category/Objective-C/index.xml" rel="self" type="application/rss+xml"/><item><title>OCLint自定义规则</title><link>https://adolsai.com/archives/oclint-custom-rules.html</link><pubDate>Fri, 02 Apr 2021 17:02:06 +0800</pubDate><guid>https://adolsai.com/archives/oclint-custom-rules.html</guid><description>&lt;h2 id="oclint"&gt;OCLint&lt;/h2&gt;&#10;&lt;p&gt;Clang本身自带AST树遍历，可以实现静态代码检查。&lt;/p&gt;&#10;&lt;p&gt;OCLint是基于Clang tool 的静态代码分析工具，换句话说相当于做了一层针对Objective-C的封装。它的核心能力是对 Clang AST 进行分析，最后输出违反规则的代码信息，并且导出指定格式的报告。&lt;/p&gt;</description></item><item><title>Clang AST</title><link>https://adolsai.com/archives/clang-ast.html</link><pubDate>Fri, 02 Apr 2021 16:50:22 +0800</pubDate><guid>https://adolsai.com/archives/clang-ast.html</guid><description>&lt;h2 id="llvm编译器架构"&gt;LLVM编译器架构&lt;/h2&gt;&#10;&lt;p&gt;&lt;img src="https://adolsai.com/uploads/2021/04/1729549626.webp" alt="llvm.png" loading="lazy" decoding="async"&gt;&#10;&lt;/p&gt;&#10;&lt;h4 id="frontend-前端"&gt;Frontend: 前端&lt;/h4&gt;&#10;&lt;p&gt;词法分析、语法分析、语义分析、生成中间代码&lt;/p&gt;&#10;&lt;h4 id="optimizer-优化器"&gt;Optimizer: 优化器&lt;/h4&gt;&#10;&lt;p&gt;中间代码优化&lt;/p&gt;&#10;&lt;h4 id="backend-后端"&gt;Backend: 后端&lt;/h4&gt;&#10;&lt;p&gt;生成机器码&lt;/p&gt;</description></item><item><title>iOS SDK 开发整理</title><link>https://adolsai.com/archives/iOS-dynamic-and-static-framework.html</link><pubDate>Fri, 17 May 2019 17:29:00 +0800</pubDate><guid>https://adolsai.com/archives/iOS-dynamic-and-static-framework.html</guid><description>&lt;h2 id="ios-sdk基础"&gt;iOS SDK基础&lt;/h2&gt;&#10;&lt;h3 id="what"&gt;What?&lt;/h3&gt;&#10;&lt;p&gt;SDK 开发就是写一堆代码，然后将这些代码打包成一个二进制文件，配合头文件和资源文件，给到别人直接使用。&lt;/p&gt;&#10;&lt;h3 id="why"&gt;Why?&lt;/h3&gt;&#10;&lt;ul&gt;&#10;&lt;li&gt;对外输出 SDK&lt;/li&gt;&#10;&lt;/ul&gt;&#10;&lt;p&gt;如OCR技术、面部识别、声纹识别等功能含有大量专利、商业机密代码，需要打包、混淆后才能提供给外部集成。&lt;/p&gt;&#10;&lt;ul&gt;&#10;&lt;li&gt;内部组件化&lt;/li&gt;&#10;&lt;/ul&gt;&#10;&lt;p&gt;依赖管理、加速编译。&lt;/p&gt;</description></item><item><title>Cocoapods 私有化踩坑</title><link>https://adolsai.com/archives/cocoapods-private-error-list.html</link><pubDate>Wed, 15 May 2019 18:04:00 +0800</pubDate><guid>https://adolsai.com/archives/cocoapods-private-error-list.html</guid><description>&lt;p&gt;整理完记录下来。&lt;/p&gt;&#10;&lt;h2 id="各种文件路径错误"&gt;各种文件路径错误&lt;/h2&gt;&#10;&lt;pre tabindex="0"&gt;&lt;code&gt;- ERROR | [iOS] file patterns: The `vendored_libraries` pattern did not match any file.&#10;&#10;- ERROR | [iOS] file patterns: The `vendored_frameworks` pattern did not match any file.&#10;&#10;- ERROR | [iOS] file patterns: The `resources` pattern did not match any file.&#10;&#10;...&#10;&lt;/code&gt;&lt;/pre&gt;</description></item><item><title>一个录音波浪动画</title><link>https://adolsai.com/archives/wave-animation-ios.html</link><pubDate>Mon, 25 Mar 2019 22:08:00 +0800</pubDate><guid>https://adolsai.com/archives/wave-animation-ios.html</guid><description>&lt;h3 id="根据音量大小变化效果"&gt;根据音量大小变化效果:&lt;/h3&gt;&#10;&lt;p&gt;&lt;img src="https://adolsai.com/uploads/2019/03/666.gif" alt="99" loading="lazy" decoding="async"&gt;&#10;&lt;/p&gt;&#10;&lt;h3 id="实现"&gt;实现&lt;/h3&gt;&#10;&lt;ol&gt;&#10;&lt;li&gt;使用三角函数计算每一个点(x, y)位置;&lt;/li&gt;&#10;&lt;li&gt;使用UIBezierPath连接这些点;&lt;/li&gt;&#10;&lt;li&gt;把path赋值给CAShapeLayer;&lt;/li&gt;&#10;&lt;/ol&gt;</description></item><item><title>来张渐变色的圆角图吧</title><link>https://adolsai.com/archives/uiimage-gradient-color.html</link><pubDate>Sat, 09 Mar 2019 14:23:08 +0800</pubDate><guid>https://adolsai.com/archives/uiimage-gradient-color.html</guid><description>&lt;h3 id="可以控制垂直或者水平方向渐变-其实给角度也可以-先放着吧"&gt;可以控制垂直或者水平方向渐变, 其实给角度也可以, 先放着吧.&lt;/h3&gt;&#10;&lt;p&gt;UIImage+LinearGradientColor.h&lt;/p&gt;&#10;&lt;pre tabindex="0"&gt;&lt;code&gt;+ (UIImage *)as_imageWithLinearGradientColors:(NSArray *)colors;&#10;+ (UIImage *)as_imageWithLinearGradientColors:(NSArray *)colors vertical:(BOOL)vertical;&#10;+ (UIImage *)as_imageWithLinearGradientColors:(NSArray *)colors size:(CGSize)size;&#10;+ (UIImage *)as_imageWithLinearGradientColors:(NSArray *)colors postions:(NSArray *)positions size:(CGSize)size;&#10;+ (UIImage *)as_imageWithLinearGradientColors:(NSArray *)colors size:(CGSize)size vertical:(BOOL)vertical;&#10;+ (UIImage *)as_imageWithLinearGradientColors:(NSArray *)colors postions:(NSArray *)positions size:(CGSize)size vertical:(BOOL)vertical;&#10;+ (UIImage *)as_imageWithLinearGradientColors:(NSArray *)colors postions:(NSArray *)positions size:(CGSize)size vertical:(BOOL)vertical cornerRadius:(CGFloat)cornerRadius borderColor:(UIColor *)borderColor borderWidth:(CGFloat)borderWidth corners:(UIRectCorner)corners;&#10;&lt;/code&gt;&lt;/pre&gt;</description></item><item><title>TRON iOS Objective-C address generate</title><link>https://adolsai.com/archives/TRON-iOS-Objective-C-address-generate.html</link><pubDate>Wed, 26 Dec 2018 14:55:00 +0800</pubDate><guid>https://adolsai.com/archives/TRON-iOS-Objective-C-address-generate.html</guid><description>&lt;p&gt;Related Document: &lt;a href="https://github.com/tronprotocol/Documentation/blob/master/TRX_CN/Tron-overview.md"&gt;TRON公链概览&lt;/a&gt;&lt;/p&gt;&#10;&lt;p&gt;引用文件来源于这里: &lt;a href="https://github.com/MountainJ/PocketEOS-IOS"&gt;PocketEOS-IOS&lt;/a&gt;&lt;/p&gt;&#10;&lt;h2 id="secrect-key-generation"&gt;Secrect Key Generation:&lt;/h2&gt;&#10;&lt;pre tabindex="0"&gt;&lt;code&gt;#import &amp;lt;Security/Security.h&amp;gt;&#10;#import &amp;#34;NSObject+Extension.h&amp;#34;&#10;#import &amp;#34;sha3.h&amp;#34;&#10;&#10;#include &amp;#34;libbase58.h&amp;#34;&#10;#include &amp;#34;sha2.h&amp;#34;&#10;#include &amp;#34;uECC.h&amp;#34;&#10;&#10;...&#10;&#10;int length = 32;&#10;uint8_t randomBytes[length];&#10;int randomResult = SecRandomCopyBytes(kSecRandomDefault, length, randomBytes);&#10;if(randomResult == 0) {&#10; NSMutableString *randomSecrect =&#10; [[NSMutableString alloc] initWithCapacity:length * 2];&#10; &#10; for(NSInteger index = 0; index &amp;lt; length; index++){&#10; [randomSecrect appendFormat:@&amp;#34;%02x&amp;#34;, randomBytes[index]];&#10; }&#10; &#10;}&#10;&lt;/code&gt;&lt;/pre&gt;</description></item><item><title>单页面请求多接口的处理逻辑</title><link>https://adolsai.com/archives/one-page-multi-api-request.html</link><pubDate>Wed, 07 Mar 2018 11:10:00 +0800</pubDate><guid>https://adolsai.com/archives/one-page-multi-api-request.html</guid><description>&lt;p&gt;说明:&lt;/p&gt;&#10;&lt;p&gt;随着公司发展, APP端页面越来越多, 页面元素信息和交互逻辑越来越丰富, 免不了有时一个复杂的页面需要请求多个接口. 我们来简单总结一下以往的处理方式.&lt;/p&gt;</description></item><item><title>反手就是一张带圆角的纯色图片</title><link>https://adolsai.com/archives/uiimage-purecolorimage.html</link><pubDate>Tue, 06 Mar 2018 11:31:00 +0800</pubDate><guid>https://adolsai.com/archives/uiimage-purecolorimage.html</guid><description>&lt;p&gt;经常用到纯色的背景图, 形状简单但是大小不一.&#10;每次都找UI小姐姐切图太麻烦了(孤注生...), 要不咱们自己画一套?&#10;于是...&lt;/p&gt;&#10;&lt;h2 id="说明"&gt;说明&lt;/h2&gt;&#10;&lt;p&gt;使用&lt;code&gt;UIGraphics&lt;/code&gt;方法直接画出来, 附带简单的圆角处理.&lt;/p&gt;</description></item><item><title>吐槽下iOS8[一] notification, scrollview.delegate</title><link>https://adolsai.com/archives/ios-8-notificationcenter-scrollviewdelegate.html</link><pubDate>Tue, 06 Mar 2018 11:21:00 +0800</pubDate><guid>https://adolsai.com/archives/ios-8-notificationcenter-scrollviewdelegate.html</guid><description>&lt;h2 id="notificationcenter"&gt;NotificationCenter&lt;/h2&gt;&#10;&lt;p&gt;从&lt;code&gt;iOS 9&lt;/code&gt;开始, 使用&lt;code&gt;NotificationCenter&lt;/code&gt;添加Observer之后, 不在需要自行调用&lt;code&gt;removeObserver:&lt;/code&gt;方法:&lt;/p&gt;</description></item><item><title>虚线边框的UIButton</title><link>https://adolsai.com/archives/dot-border-uibutton.html</link><pubDate>Tue, 06 Mar 2018 10:59:56 +0800</pubDate><guid>https://adolsai.com/archives/dot-border-uibutton.html</guid><description>&lt;h2 id="简单说明"&gt;简单说明&lt;/h2&gt;&#10;&lt;p&gt;使用&lt;code&gt;CAShapeLayer&lt;/code&gt;创建虚线, 在&lt;code&gt;layoutSubviews&lt;/code&gt;时调整其&lt;code&gt;frame&lt;/code&gt;.&lt;/p&gt;</description></item><item><title>图片文字居中上下排列的UIButton</title><link>https://adolsai.com/archives/center_uibutton.html</link><pubDate>Tue, 06 Mar 2018 10:30:00 +0800</pubDate><guid>https://adolsai.com/archives/center_uibutton.html</guid><description>&lt;h2 id="简单思路"&gt;简单思路:&lt;/h2&gt;&#10;&lt;p&gt;在&lt;code&gt;layoutSubviews:&lt;/code&gt;的时候获取当button的frame, 然后通过直接设置&lt;code&gt;imageView&lt;/code&gt;和&lt;code&gt;titleLabel&lt;/code&gt;的&lt;code&gt;frame&lt;/code&gt;来实现.&lt;/p&gt;</description></item><item><title>GB18030(兼容GB2312)编码验证与校正</title><link>https://adolsai.com/archives/fix-GB18030-GB2312-encode-error.html</link><pubDate>Sun, 13 Mar 2016 23:21:00 +0800</pubDate><guid>https://adolsai.com/archives/fix-GB18030-GB2312-encode-error.html</guid><description>&lt;p&gt;之前写 APP 抓 &lt;code&gt;GB2312&lt;/code&gt; 编码的HTML时候， 发现 HTML 文件里面混了一些非 &lt;code&gt;GB18030&lt;/code&gt;(包含&lt;code&gt;GB2312&lt;/code&gt;字符集) 字符集的字符。&lt;/p&gt;&#10;&lt;p&gt;以下代码出错：&lt;/p&gt;&#10;&lt;pre tabindex="0"&gt;&lt;code&gt;//self.gb18030Encoding = CFStringConvertEncodingToNSStringEncoding (kCFStringEncodingGB_18030_2000);&#10;&#10;//原页面采用 GB2312 编码&#10;NSString *result = [[NSString alloc] initWithData:data encoding:self.gb18030Encoding];&#10;&lt;/code&gt;&lt;/pre&gt;</description></item><item><title>Xcode note</title><link>https://adolsai.com/archives/Xcode-note.html</link><pubDate>Wed, 02 Dec 2015 17:22:00 +0800</pubDate><guid>https://adolsai.com/archives/Xcode-note.html</guid><description>&lt;h2 id="插件"&gt;插件&lt;sup id="fnref:1"&gt;&lt;a href="#fn:1" class="footnote-ref" role="doc-noteref"&gt;1&lt;/a&gt;&lt;/sup&gt;&lt;/h2&gt;&#10;&lt;h3 id="xcode颜色显示插件colorsense"&gt;XCode颜色显示插件ColorSense&lt;/h3&gt;&#10;&lt;p&gt;代码里的那些冷冰冰的颜色数值，到底时什么颜色？如果你经常遇到这个问题，每每不得不运行下模拟器去看看，那么这个插件绝对不容错过。更彪悍的是你甚至可以点击显示的颜色面板，直接通过系统的ColorPicker来自动生成对应颜色代码，再也不用做各种颜色代码转换了！&lt;/p&gt;</description></item><item><title>View Controller Programming Guide for iOS</title><link>https://adolsai.com/archives/View-Controller-Programming-Guide-for-iOS-1.html</link><pubDate>Fri, 16 Oct 2015 18:04:00 +0800</pubDate><guid>https://adolsai.com/archives/View-Controller-Programming-Guide-for-iOS-1.html</guid><description>&lt;h1 id="overview"&gt;Overview&lt;/h1&gt;&#10;&lt;h2 id="the-role-of-view-controllers"&gt;The Role of View Controllers&lt;/h2&gt;&#10;&lt;p&gt;&lt;code&gt;UIViewController&lt;/code&gt;包含了用来管理view、event、transitioning的所有方法和属性。只需要直接集成该class或者其subclass就可以使用。&lt;/p&gt;&#10;&lt;p&gt;两类viewcontroller：&lt;/p&gt;&#10;&lt;ul&gt;&#10;&lt;li&gt;content view controllers 包含具体内容（包括各种控件）。&lt;/li&gt;&#10;&lt;li&gt;container view controllers 包含其他viewcontroller。&lt;/li&gt;&#10;&lt;/ul&gt;</description></item><item><title>Bundle Programming Guide</title><link>https://adolsai.com/archives/Bundle-Programming-Guide.html</link><pubDate>Mon, 21 Sep 2015 17:35:00 +0800</pubDate><guid>https://adolsai.com/archives/Bundle-Programming-Guide.html</guid><description>&lt;h1 id="introduction"&gt;Introduction&lt;/h1&gt;&#10;&lt;p&gt;Bundle是OS X和iOS中用来结构性封装代码和相关数据文件的技术。&lt;/p&gt;&#10;&lt;p&gt;在Xcode中新建project的时候会自动帮你创建好相应的项目结构:&lt;/p&gt;&#10;&lt;p&gt;&lt;img src="https://adolsai.com/uploads/2015/09/619775116.webp" alt="bundle-sample1" loading="lazy" decoding="async"&gt;&#10;&lt;/p&gt;</description></item><item><title>Resource Programming Guide</title><link>https://adolsai.com/archives/Resource-Programming-Guide.html</link><pubDate>Wed, 16 Sep 2015 21:50:00 +0800</pubDate><guid>https://adolsai.com/archives/Resource-Programming-Guide.html</guid><description>&lt;h1 id="about-resource"&gt;About Resource&lt;/h1&gt;&#10;&lt;p&gt;OS X和iOS直接支持的类型：&lt;/p&gt;&#10;&lt;ul&gt;&#10;&lt;li&gt;Nib 存放用户界面对象&lt;/li&gt;&#10;&lt;li&gt;Strings 语言本地化文档&lt;/li&gt;&#10;&lt;li&gt;Image, Sound, Movies 预渲染文件&lt;/li&gt;&#10;&lt;li&gt;Property List 一般数据文件格式&lt;/li&gt;&#10;&lt;/ul&gt;</description></item><item><title>Using Regular Expression</title><link>https://adolsai.com/archives/using-regular-expression.html</link><pubDate>Thu, 27 Aug 2015 09:52:00 +0800</pubDate><guid>https://adolsai.com/archives/using-regular-expression.html</guid><description>&lt;blockquote&gt;&#10;&lt;p&gt;很好的入门教程:&lt;a href="http://www.jb51.net/tools/zhengze.html"&gt;《正则表达式30分钟入门教程》 by deerchao&lt;/a&gt;&lt;/p&gt;&#10;&lt;/blockquote&gt;&#10;&lt;blockquote&gt;&#10;&lt;p&gt;维基百科：&lt;a href="http://en.wikipedia.org/wiki/Regular_expression"&gt;http://en.wikipedia.org/wiki/Regular_expression&lt;/a&gt;&lt;/p&gt;&#10;&lt;/blockquote&gt;&#10;&lt;blockquote&gt;&#10;&lt;p&gt;正则表达式在线测试：&lt;a href="http://tool.chinaz.com/regex/"&gt;http://tool.chinaz.com/regex/&lt;/a&gt;&lt;/p&gt;&#10;&lt;/blockquote&gt;</description></item><item><title>File System Programming Guide(iOS)</title><link>https://adolsai.com/archives/File-System-Programming-Guide.html</link><pubDate>Thu, 27 Aug 2015 09:44:00 +0800</pubDate><guid>https://adolsai.com/archives/File-System-Programming-Guide.html</guid><description>&lt;h2 id="about"&gt;About&lt;/h2&gt;&#10;&lt;p&gt;sandbox机制让文件系统使用起来稍微有点不同，特别是访问别的app内容的时候需要取得对应的权限。同时sandbox机制基本明确了文件的存储位置。&lt;/p&gt;&#10;&lt;p&gt;该手册涉及内容：&lt;/p&gt;&#10;&lt;ul&gt;&#10;&lt;li&gt;sandbox文件系统规范&lt;/li&gt;&#10;&lt;li&gt;多线程/进程文件读写（&lt;code&gt;NSFileCoordinator&lt;/code&gt;、&lt;code&gt;NSFilePresenter&lt;/code&gt;）&lt;/li&gt;&#10;&lt;li&gt;文件类型及对应的读写方式&lt;/li&gt;&#10;&lt;li&gt;使用高级文件系统API&lt;/li&gt;&#10;&lt;li&gt;通用文件管理界面（如&lt;code&gt;Open and Save panel&lt;/code&gt;）&lt;/li&gt;&#10;&lt;li&gt;异步读写文件&lt;/li&gt;&#10;&lt;li&gt;模仿&lt;strong&gt;Finder&lt;/strong&gt;操作文件&lt;/li&gt;&#10;&lt;li&gt;优化文件相关操作&lt;/li&gt;&#10;&lt;li&gt;关于&lt;code&gt;File Mapping&lt;/code&gt;和&lt;code&gt;Directory Localized Name&lt;/code&gt;（OS X）在《&lt;em&gt;File System Advanced Programming Topics&lt;/em&gt;》&lt;/li&gt;&#10;&lt;/ul&gt;</description></item><item><title>[转]iOS开发中那些高效常用的宏</title><link>https://adolsai.com/archives/MacroDefinition.html</link><pubDate>Wed, 26 Aug 2015 16:16:00 +0800</pubDate><guid>https://adolsai.com/archives/MacroDefinition.html</guid><description>&lt;p&gt;iOS开发过程中使用一些常用的宏可以提高开发效率，提高代码的重用性；将这些宏放到一个头文件里然后再放到工程中的-Prefix.pch文件中(或者直接放到-Prefix.pch中)直接可以使用,灰常方便。&lt;/p&gt;</description></item><item><title>[转]iOS 的多线程同步</title><link>https://adolsai.com/archives/133.html</link><pubDate>Mon, 17 Aug 2015 12:10:00 +0800</pubDate><guid>https://adolsai.com/archives/133.html</guid><description>&lt;p&gt;转载：&lt;a href="http://blog.zorro.im/posts/iOS-muti-threading-synchronization.html"&gt;iOS 的多线程同步 by zqqf16&lt;/a&gt;&lt;/p&gt;&#10;&lt;blockquote&gt;&#10;&lt;p&gt;我的上一家公司有个引以为豪的技术：多核无锁，不仅避免了各种由锁带来的问题，还极大的提高了性能，所以产品性能能够在业界数一数二。 在这样的氛围影响下，我在开发的时候也很少用锁，能不用就不用。 后来去面试 iOS 开发的时候，面试官总是喜欢问有关于锁的问题，最近趁有时间就整理了一下，算是补充一下技能树吧。&lt;/p&gt;&#10;&lt;/blockquote&gt;</description></item><item><title>Threading Programming Guide 4 Synchronization</title><link>https://adolsai.com/archives/Threading-Programming-Guide-4-Synchronization.html</link><pubDate>Thu, 13 Aug 2015 17:17:00 +0800</pubDate><guid>https://adolsai.com/archives/Threading-Programming-Guide-4-Synchronization.html</guid><description>&lt;blockquote&gt;&#10;&lt;p&gt;部分内容来源于：&lt;a href="http://blog.zorro.im/posts/iOS-muti-threading-synchronization.html"&gt;ios多线程同步&lt;/a&gt;&lt;/p&gt;&#10;&lt;/blockquote&gt;&#10;&lt;h2 id="synchronization-tools"&gt;Synchronization Tools&lt;/h2&gt;&#10;&lt;h3 id="atomic-operations"&gt;Atomic Operations&lt;/h3&gt;&#10;&lt;p&gt;在多进程（线程）访问资源时，能够确保所有其他的进程（线程）都不在同一时间内访问相同的资源。原子操作（atomic operation）是不需要synchronized。所谓原子操作是指不会被线程调度机制打断的操作；这种操作一旦开始，就一直运行到结束，中间不会有任何 context switch （切换到另一个线程）。通常所说的原子操作包括对非long和double型的primitive进行赋值，以及返回这两者之外的primitive。&lt;/p&gt;&#10;&lt;p&gt;需要硬件实现，但是维基说可以用其他锁机制软件实现。&lt;/p&gt;</description></item><item><title>Transitioning to ARC Release Notes</title><link>https://adolsai.com/archives/Transitioning-to-ARC-Release-Notes.html</link><pubDate>Wed, 12 Aug 2015 21:40:00 +0800</pubDate><guid>https://adolsai.com/archives/Transitioning-to-ARC-Release-Notes.html</guid><description>&lt;p&gt;ARC (Automatic Reference Counting)是llvm compiler的特性之一，提供了objective-c对象的自动内存管理功能。它自动在适当的地方插入&lt;code&gt;retian&lt;/code&gt;、&lt;code&gt;release&lt;/code&gt;、&lt;code&gt;autorelease&lt;/code&gt;方法，配合autoreleasepool使用。启用了ARC之后，将不再能手动使用&lt;code&gt;retian&lt;/code&gt;、&lt;code&gt;release&lt;/code&gt;、&lt;code&gt;autorelease&lt;/code&gt;方法了。&lt;/p&gt;</description></item><item><title>Threading Programming Guide 3 Run Loops</title><link>https://adolsai.com/archives/Threading-Programming-Guide-3-Run-Loops.html</link><pubDate>Sat, 08 Aug 2015 17:42:00 +0800</pubDate><guid>https://adolsai.com/archives/Threading-Programming-Guide-3-Run-Loops.html</guid><description>&lt;p&gt;iOS线程编程手册-3-Run Loops&lt;/p&gt;&#10;&lt;p&gt;Run Loop是和线程关系密切的基础架构，它配合线程实现可循环事件处理机制。Run Loop的设计目的是让线程由事件驱动而运行，没有接收到事件就休眠。&lt;/p&gt;&#10;&lt;p&gt;只有主线程才是自带Run Loop光环的，设置主线程的Run Loop是应用程序启动的一部分。其他你自己创建的线程都需要自己写代码来实现Run Loop。Cocoa和Core Foundation都提供了run loop object让你可以方便的创建和管理run loop。&lt;/p&gt;</description></item><item><title>Threading Programming Guide 2 Thread Management</title><link>https://adolsai.com/archives/Threading-Programming-Guide-2-Thread-Management.html</link><pubDate>Fri, 07 Aug 2015 13:03:00 +0800</pubDate><guid>https://adolsai.com/archives/Threading-Programming-Guide-2-Thread-Management.html</guid><description>&lt;p&gt;iOS线程编程手册-2-线程管理&lt;/p&gt;&#10;&lt;p&gt;每一个进程（应用程序）都是由一个或者多个线程组成，每一个都有自己的执行路径（path of execution）。每一个应用程序的启动都是从主线程开始，然后再创建和启动其他线程。&lt;/p&gt;&#10;&lt;p&gt;当一个进程成功地创建/启动了更加多的线程，这些线程们在同一个进程里面独立的运行。他们有自己的execution stack并且由kernel指定计划在runtime中启动运行。一个线程可以和其他线程通信、可以实施I/O操作和其他任何你想干的事情。又因为他们是在同一个进程里面运行的，所以他们和主线程共享虚拟内存（virtual memory space）和访问权限。&lt;/p&gt;</description></item><item><title>Concurrency Programming Guide 5 Dispatch Sources</title><link>https://adolsai.com/archives/Concurrency-Programming-Guide-5-Dispatch-Sources.html</link><pubDate>Thu, 06 Aug 2015 10:58:00 +0800</pubDate><guid>https://adolsai.com/archives/Concurrency-Programming-Guide-5-Dispatch-Sources.html</guid><description/></item><item><title>Threading Programming Guide 1 About Threaded Programming</title><link>https://adolsai.com/archives/Threading-Programming-Guide-1-About-Threaded-Programming.html</link><pubDate>Wed, 05 Aug 2015 16:00:00 +0800</pubDate><guid>https://adolsai.com/archives/Threading-Programming-Guide-1-About-Threaded-Programming.html</guid><description>&lt;p&gt;iOS线程编程手册-1-关于线程编程&lt;/p&gt;&#10;&lt;p&gt;虽然有GCD和NSOperation可以高效地实现多线程，但是你也可以使用OS X和iOS提供的底层的线程API。&lt;/p&gt;&#10;&lt;h4 id="文档结构"&gt;文档结构&lt;/h4&gt;&#10;&lt;ul&gt;&#10;&lt;li&gt;&lt;strong&gt;About Threaded Programming&lt;/strong&gt; 介绍线程的概念和在app中的作用&lt;/li&gt;&#10;&lt;li&gt;&lt;strong&gt;Thread Management&lt;/strong&gt; 介绍&lt;strong&gt;OS X&lt;/strong&gt;中的线程技术和使用方法&lt;/li&gt;&#10;&lt;li&gt;&lt;strong&gt;Run Loops&lt;/strong&gt; 介绍如何使用响应事件的Run Loop&lt;/li&gt;&#10;&lt;li&gt;&lt;strong&gt;Synchronization&lt;/strong&gt; 线程同步和操作方式&lt;/li&gt;&#10;&lt;li&gt;&lt;strong&gt;Thread Safety Summary&lt;/strong&gt; 线程安全相关&lt;/li&gt;&#10;&lt;/ul&gt;</description></item><item><title>Advanced Memory Management Programming Guide</title><link>https://adolsai.com/archives/Advanced-Memory-Management-Programming-Guide.html</link><pubDate>Mon, 03 Aug 2015 16:18:00 +0800</pubDate><guid>https://adolsai.com/archives/Advanced-Memory-Management-Programming-Guide.html</guid><description>&lt;h2 id="关于ios内存管理"&gt;关于iOS内存管理&lt;/h2&gt;&#10;&lt;blockquote&gt;&#10;&lt;p&gt;该文章包含了一些ARC出现之前的内存管理方法，看完之后去看 《 &lt;em&gt;Transitioning to ARC Release Notes&lt;/em&gt; 》可以更加完整地把知识结合起来。&lt;/p&gt;&#10;&lt;/blockquote&gt;&#10;&lt;p&gt;内存管理可以理解为把内存这种有限的资源分配给一个application里面所有代码和数据的动作。&lt;/p&gt;&#10;&lt;p&gt;使用Objective-C的时候，内存管理实际上就是对app内使用的Object的关系的管理。因为iOS的内存管理是基于&lt;em&gt;reference counting&lt;/em&gt;的。&lt;/p&gt;&#10;&lt;p&gt;目标是app占用的内存中不包含任何不需要的object。&lt;/p&gt;</description></item><item><title>Concurrency Programming Guide 4 Dispatch Queues</title><link>https://adolsai.com/archives/Concurrency-Programming-Guide-4-Dispatch-Queues.html</link><pubDate>Fri, 31 Jul 2015 00:39:00 +0800</pubDate><guid>https://adolsai.com/archives/Concurrency-Programming-Guide-4-Dispatch-Queues.html</guid><description>&lt;h1 id="dispatch-queues"&gt;Dispatch Queues&lt;/h1&gt;&#10;&lt;h2 id="type-of-dispatch-queues"&gt;type of Dispatch Queues&lt;/h2&gt;&#10;&lt;table&gt;&#10;&#9;&lt;thead&gt;&#10;&#9;&#9;&#9;&lt;tr&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;th&gt;类型&lt;/th&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;th&gt;描述&lt;/th&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;th&gt;限制&lt;/th&gt;&#10;&#9;&#9;&#9;&lt;/tr&gt;&#10;&#9;&lt;/thead&gt;&#10;&#9;&lt;tbody&gt;&#10;&#9;&#9;&#9;&lt;tr&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;Serial&lt;/td&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;也叫&lt;em&gt;private dispatch queue&lt;/em&gt;，串行执行queue上的每一个task。 每一个task都在独立的线程里运行，由dispatch queue统一管理。经常用来控制对特定资源的访问（如临界资源）。&lt;/td&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;木有限制，你可以创建任意多个的serial dispatch queue，他们之间是并行的。&lt;/td&gt;&#10;&#9;&#9;&#9;&lt;/tr&gt;&#10;&#9;&#9;&#9;&lt;tr&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;Concurrent&lt;/td&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;也叫&lt;em&gt;global diapatch queue&lt;/em&gt;，并行执行queue里面的每一个task。每一个task都在独立的线程里运行，由dispatch queue统一管理。并行的数量是动态地，由system当前的资源状态决定。&lt;/td&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;concurrent dispatch queue有四个，由系统提供，根据优先级别区分为default、low、high、background。&lt;/td&gt;&#10;&#9;&#9;&#9;&lt;/tr&gt;&#10;&#9;&#9;&#9;&lt;tr&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;Main dispatch queue&lt;/td&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;这个diapatch queue在main thread里串行执行task。所以这个queue是关联main thread的run loop的，用来执行dispatch source相关的任务。因为该queue在main thread执行task，所以常用作各任务的同步点&lt;/td&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;全局唯一的特殊serial dispatch queue&lt;/td&gt;&#10;&#9;&#9;&#9;&lt;/tr&gt;&#10;&#9;&lt;/tbody&gt;&#10;&lt;/table&gt;</description></item><item><title>Concurrency Programming Guide 3 Operation Queues</title><link>https://adolsai.com/archives/Concurrency-Programming-Guide-3-Operation-Queues.html</link><pubDate>Tue, 28 Jul 2015 19:55:00 +0800</pubDate><guid>https://adolsai.com/archives/Concurrency-Programming-Guide-3-Operation-Queues.html</guid><description>&lt;h1 id="operation-queues"&gt;Operation Queues&lt;/h1&gt;&#10;&lt;h2 id="与gcd对比"&gt;与&lt;strong&gt;GCD&lt;/strong&gt;对比&lt;/h2&gt;&#10;&lt;ol start="0"&gt;&#10;&lt;li&gt;&#10;&lt;p&gt;稍微慢一点点，因为是&lt;strong&gt;NSOperation&lt;/strong&gt;和&lt;strong&gt;NSOperationQueue&lt;/strong&gt;基于&lt;strong&gt;GCD&lt;/strong&gt;的(在Mac OS X v10.6 &amp;amp; iOS 4之后&lt;sup id="fnref:1"&gt;&lt;a href="#fn:1" class="footnote-ref" role="doc-noteref"&gt;1&lt;/a&gt;&lt;/sup&gt;);&lt;/p&gt;&#10;&lt;/li&gt;&#10;&lt;li&gt;&#10;&lt;p&gt;Operation Queue可以实现operation的dependency功能，使之在制定的operation完成之后再运行。而且指定线程可以在不同的operation queue里跑;&lt;/p&gt;&#10;&lt;/li&gt;&#10;&lt;li&gt;&#10;&lt;p&gt;可以重用、取消、暂停operation;&lt;/p&gt;&#10;&lt;/li&gt;&#10;&lt;li&gt;&#10;&lt;p&gt;可以使用&lt;strong&gt;KVO&lt;/strong&gt;，方便监控operation的运行状态;&lt;/p&gt;&#10;&lt;/li&gt;&#10;&lt;li&gt;&#10;&lt;p&gt;Operation既可以直接调用&lt;code&gt;start&lt;/code&gt;方法独立运行也可以add到operation queue里面跑;&lt;/p&gt;&#10;&lt;/li&gt;&#10;&lt;li&gt;&#10;&lt;p&gt;可以使用&lt;code&gt;setCompletionBlock:&lt;/code&gt;设置一个operation执行完之后的动作;&lt;/p&gt;&#10;&lt;/li&gt;&#10;&lt;li&gt;&#10;&lt;p&gt;可以定义operation优先级别&lt;code&gt;setQueuePriority:&lt;/code&gt;;&lt;/p&gt;&#10;&lt;/li&gt;&#10;&lt;/ol&gt;</description></item><item><title>Concurrency Programming Guide 2 Concurrency and Application Design</title><link>https://adolsai.com/archives/Concurrency-Programming-Guide-2-Concurrency-and-Application-Design.html</link><pubDate>Tue, 28 Jul 2015 18:02:00 +0800</pubDate><guid>https://adolsai.com/archives/Concurrency-Programming-Guide-2-Concurrency-and-Application-Design.html</guid><description>&lt;h1 id="concurrency-and-application-design"&gt;Concurrency and Application Design&lt;/h1&gt;&#10;&lt;p&gt;关于iOS多线程先看这个：&lt;/p&gt;&#10;&lt;hr&gt;&#10;&lt;blockquote&gt;&#10;&lt;p&gt;&lt;a href="http://geeklu.com/2012/02/thread/"&gt;Mac&amp;amp;iOS之多线程&lt;/a&gt;&#10;###一.线程概述&lt;/p&gt;&#10;&lt;p&gt;有些程序是一条直线，起点到终点；有些程序是一个圆，不断循环，直到将它切断。直线的如简单的Hello World，运行打印完,它的生命周期便结束了，像昙花一现那样；圆如操作系统，一直运行直到你关机。&lt;/p&gt;&#10;&lt;/blockquote&gt;</description></item><item><title>Concurrency Programming Guide 1 Glossary</title><link>https://adolsai.com/archives/Concurrency-Programming-Guide-1-Glossary.html</link><pubDate>Tue, 28 Jul 2015 14:05:00 +0800</pubDate><guid>https://adolsai.com/archives/Concurrency-Programming-Guide-1-Glossary.html</guid><description>&lt;h1 id="术语表"&gt;术语表&lt;/h1&gt;&#10;&lt;h4 id="application"&gt;application&lt;/h4&gt;&#10;&lt;p&gt;我们常说的APP，包含用户互交界面的应用程序&lt;/p&gt;&#10;&lt;h4 id="asynchronous-design-approach"&gt;asynchronous design approach&lt;/h4&gt;&#10;&lt;p&gt;异步设计方法&lt;/p&gt;&#10;&lt;p&gt;asynchonous是指让代码跑在别的线程上，而不是发起的线程上。使用多核处理器资源来提高程序的运行效率。&lt;/p&gt;&#10;&lt;h4 id="block-object"&gt;block object&lt;/h4&gt;&#10;&lt;p&gt;一种C结构体，包含了代码和相关数据。使用block可以很方便的把一段包含数据的代码交给其他线程执行。关于block的具体介绍见 &lt;em&gt;Block Programing Guide&lt;/em&gt;&lt;/p&gt;</description></item><item><title>Key Value Coding and Key Value Observing</title><link>https://adolsai.com/archives/Key-Value-Coding-and-Key-Value-Observing.html</link><pubDate>Thu, 23 Jul 2015 15:26:00 +0800</pubDate><guid>https://adolsai.com/archives/Key-Value-Coding-and-Key-Value-Observing.html</guid><description>&lt;h1 id="key-value-coding"&gt;Key Value Coding&lt;sup id="fnref:1"&gt;&lt;a href="#fn:1" class="footnote-ref" role="doc-noteref"&gt;1&lt;/a&gt;&lt;/sup&gt;&lt;/h1&gt;&#10;&lt;h2 id="简介"&gt;简介&lt;/h2&gt;&#10;&lt;p&gt;**KVC(Key-value coding)**是一套利用字符串标识符间接访问对象属性和关系的机制,由&lt;a href="https://developer.apple.com/library/mac/documentation/Cocoa/Reference/Foundation/Protocols/NSKeyValueCoding_Protocol/index.html"&gt;&lt;code&gt;NSKeyValueCoding informal protocal&lt;/code&gt;&lt;/a&gt;定义。&lt;/p&gt;</description></item><item><title>About Objective-C runtime</title><link>https://adolsai.com/archives/About-Objective-C-runtime.html</link><pubDate>Fri, 03 Jul 2015 15:41:00 +0800</pubDate><guid>https://adolsai.com/archives/About-Objective-C-runtime.html</guid><description>&lt;h2 id="legacy-and-modern-versions"&gt;Legacy and Modern Versions&lt;/h2&gt;&#10;&lt;p&gt;最大区别是“non-fragile”&lt;/p&gt;&#10;&lt;p&gt;Legacy Version下修改了一个类中的实例变量，其子类需要重新编译&lt;/p&gt;</description></item><item><title>Date and Time Programming Guide 2</title><link>https://adolsai.com/archives/Date-and-Time-Programming-Guide-2.html</link><pubDate>Tue, 16 Jun 2015 14:01:00 +0800</pubDate><guid>https://adolsai.com/archives/Date-and-Time-Programming-Guide-2.html</guid><description>&lt;p&gt;&lt;embed id="xunlei_com_thunder_helper_plugin_d462f475-c18e-46be-bd10-327458d045bd" type="application/thunder_download_plugin" height="0" width="0"/&gt;坑着先&lt;/p&gt;</description></item><item><title>Date and Time Programming Guide 1</title><link>https://adolsai.com/archives/Data-and-Time-Programming-Guide-1.html</link><pubDate>Sat, 13 Jun 2015 01:00:00 +0800</pubDate><guid>https://adolsai.com/archives/Data-and-Time-Programming-Guide-1.html</guid><description>&lt;h2&gt;Dates&lt;br/&gt;&lt;/h2&gt;&lt;h3&gt;Creating Time Objects&lt;br/&gt;&lt;/h3&gt;</description></item><item><title>Binary Data Programming Guide</title><link>https://adolsai.com/archives/Binary-Data-Programming-Guide.html</link><pubDate>Fri, 12 Jun 2015 16:38:00 +0800</pubDate><guid>https://adolsai.com/archives/Binary-Data-Programming-Guide.html</guid><description>&lt;h2&gt;Contents&lt;/h2&gt;&lt;blockquote&gt;&lt;p&gt;Data Objects //数据封装类&lt;/p&gt;&lt;p&gt;Working With Binary Data //创建和使用样例&lt;/p&gt;&lt;p&gt;Working With Mutable Binary Data //修改NSMutableData&lt;/p&gt;&lt;/blockquote&gt;</description></item><item><title>String Programming Guide 3 (完)</title><link>https://adolsai.com/archives/String-Programming-Guide-3.html</link><pubDate>Thu, 11 Jun 2015 14:32:00 +0800</pubDate><guid>https://adolsai.com/archives/String-Programming-Guide-3.html</guid><description>&lt;h2&gt;Character Sets&lt;br/&gt;&lt;/h2&gt;&lt;p&gt;NSCharacterSet, NSMutableCharacterSet&lt;/p&gt;&lt;h3&gt;Character Set Basics&lt;/h3&gt;&lt;p&gt;NSString 和 NSScanner 都有通过 NSCharacterSet 来实现其查找排序等功能&lt;br/&gt;&lt;/p&gt;</description></item><item><title>String Programming Guide 2</title><link>https://adolsai.com/archives/String-Programming-Guide-2.html</link><pubDate>Wed, 10 Jun 2015 10:41:00 +0800</pubDate><guid>https://adolsai.com/archives/String-Programming-Guide-2.html</guid><description>&lt;h2&gt;String Format Specifiers&lt;/h2&gt;&lt;h3&gt;Format Specifiers&lt;br/&gt;&lt;/h3&gt;&lt;p&gt;IEEE printf specification:&lt;br/&gt;&lt;/p&gt;</description></item><item><title>String Programming Guide 1</title><link>https://adolsai.com/archives/String-Programming-Guide-1.html</link><pubDate>Mon, 08 Jun 2015 21:57:00 +0800</pubDate><guid>https://adolsai.com/archives/String-Programming-Guide-1.html</guid><description>&lt;p&gt;&amp;nbsp;NSString 和 NSMutableString 的基本用法和一些注意事项.&lt;/p&gt;&lt;p&gt;官方原文链接:&lt;a href="https://developer.apple.com/library/ios/documentation/Cocoa/Conceptual/Strings/introStrings.html#//apple_ref/doc/uid/10000035i"&gt;String Programming Guide&lt;/a&gt;&lt;/p&gt;</description></item><item><title>Number and Value Programming Topics</title><link>https://adolsai.com/archives/Number-and-Value-Programming-Topics.html</link><pubDate>Mon, 01 Jun 2015 18:12:00 +0800</pubDate><guid>https://adolsai.com/archives/Number-and-Value-Programming-Topics.html</guid><description>&lt;p&gt;这是一个关于C基本数值类型的封装类 NSValue及亲儿子NSNumber, NSDecimalNumber, 和隔壁NSnull的故事&lt;/p&gt;&lt;p&gt;官方原文链接:&lt;a href="https://developer.apple.com/library/ios/documentation/Cocoa/Conceptual/NumbersandValues/NumbersandValues.html#//apple_ref/doc/uid/10000038i"&gt;Number and Value Programming Topics&lt;/a&gt;&lt;/p&gt;</description></item><item><title>iOS Data management - Data Management Starting Point</title><link>https://adolsai.com/archives/iOS-Data-management---Data-Management-Starting-Point.html</link><pubDate>Mon, 01 Jun 2015 17:32:00 +0800</pubDate><guid>https://adolsai.com/archives/iOS-Data-management---Data-Management-Starting-Point.html</guid><description>&lt;p&gt;&lt;a href="https://developer.apple.com/library/ios/referencelibrary/GettingStarted/GS_DataManagement_iPhone/index.html#//apple_ref/doc/uid/TP40007299" _src="https://developer.apple.com/library/ios/referencelibrary/GettingStarted/GS_DataManagement_iPhone/index.html#//apple_ref/doc/uid/TP40007299"&gt;https://developer.apple.com/library/ios/referencelibrary/GettingStarted/GS_DataManagement_iPhone/index.html&lt;/a&gt;&lt;/p&gt;&lt;p&gt;&lt;br/&gt;&lt;/p&gt;&lt;p&gt;这是iOS Developer Library里面关于数据管理的入门文档.&lt;/p&gt;&lt;p&gt;&lt;br/&gt;&lt;/p&gt;&lt;p&gt;内容划分如下:&lt;/p&gt;&lt;p class="p1"&gt;&lt;span class="s1"&gt;Contents:&lt;/span&gt;&lt;/p&gt;&lt;ul class="ul1 list-paddingleft-2"&gt;&lt;li&gt;&lt;p&gt;&lt;span class="s2"&gt;&lt;/span&gt;&lt;span class="s1"&gt;Get Up and Running&lt;/span&gt;&lt;/p&gt;&lt;/li&gt;&lt;li&gt;&lt;p&gt;&lt;span class="s2"&gt;&lt;/span&gt;&lt;span class="s1"&gt;Become Proficient&lt;/span&gt;&lt;/p&gt;&lt;/li&gt;&lt;li&gt;&lt;p&gt;&lt;span class="s2"&gt;&lt;/span&gt;&lt;span class="s1"&gt;Provide Application-Level Preferences&lt;/span&gt;&lt;/p&gt;&lt;/li&gt;&lt;li&gt;&lt;p&gt;&lt;span class="s2"&gt;&lt;/span&gt;&lt;span class="s1"&gt;Access Contact Information&lt;/span&gt;&lt;/p&gt;&lt;/li&gt;&lt;/ul&gt;</description></item><item><title>Objective-C Learning Notes - apple UI Sample Code</title><link>https://adolsai.com/archives/Objective-C-Learning-Notes---apple-ui-sample-code.html</link><pubDate>Fri, 20 Feb 2015 23:44:00 +0800</pubDate><guid>https://adolsai.com/archives/Objective-C-Learning-Notes---apple-ui-sample-code.html</guid><description>&lt;p&gt;&lt;br/&gt;&lt;/p&gt;&lt;p&gt;&lt;a href="https://developer.apple.com/library/ios/samplecode/UICatalog/Introduction/Intro.html" _src="https://developer.apple.com/library/ios/samplecode/UICatalog/Introduction/Intro.html"&gt;https://developer.apple.com/library/ios/samplecode/UICatalog/Introduction/Intro.html&lt;/a&gt;&lt;/p&gt;&lt;p&gt;&lt;br/&gt;&lt;/p&gt;</description></item><item><title>Objective-C Learning Notes - UIPageControl</title><link>https://adolsai.com/archives/Objective-C-Learning-Notes---UIPageControl.html</link><pubDate>Fri, 20 Feb 2015 20:19:40 +0800</pubDate><guid>https://adolsai.com/archives/Objective-C-Learning-Notes---UIPageControl.html</guid><description>&lt;p&gt;&#10; UIPageControl&lt;br/&gt;&#10;&lt;/p&gt;&#10;&lt;p&gt;&#10; 翻页控件&#10;&lt;/p&gt;&#10;&lt;p&gt;&#10; UIPageControl 控件在 iOS 应用程序中出现的比较频繁,尤其在和 UIScrollView 配合来显示大量数据.&#10;&lt;/p&gt;&#10;&lt;p&gt;&#10; 创建:&#10;&lt;/p&gt;&#10;&lt;pre class="brush:cpp;toolbar:false"&gt;UIPageControl *myPageControl = [[UIPageControl alloc] initWithFrame:CGRectMake(0.0,400.0, 320.0, 0.0)];&lt;/pre&gt;&#10;&lt;p&gt;&#10; 设置属性:&#10;&lt;/p&gt;&#10;&lt;pre class="brush:cpp;toolbar:false"&gt;myPageControl.numberOfPage = 5; //页面数目&#10;myPageControl.currentPage = 3; //当前页数,第四页&#10;myPageControl.hidesForSinglePage = YES; //隐藏指示器&#10;myPageControl.defersCurrentPageDisplay = YES;&#10;[myPageControl updateCurrentPageDisplay];&lt;/pre&gt;</description></item><item><title>Objective-C语法快速参考</title><link>https://adolsai.com/archives/77.html</link><pubDate>Fri, 20 Feb 2015 01:14:00 +0800</pubDate><guid>https://adolsai.com/archives/77.html</guid><description>&lt;p style="font-size: 12px; color: rgb(53, 56, 61); white-space: normal; margin-top: 0px; margin-bottom: 0px; font-family: &amp;#39;Lucida Grande&amp;#39;; min-height: 13px; background-color: rgb(255, 255, 255);"&gt;&lt;span style="letter-spacing: 0px;"&gt;大部分有一点其他平台开发基础的初学者看到XCode，第一感想是磨拳擦掌，看到Interface Builder之后，第一感想是跃跃欲试，而看到Objective-C的语法，第一感想就变成就望而却步了。好吧，我是在说我自己。&lt;/span&gt;&lt;/p&gt;&lt;p style="font-size: 12px; color: rgb(53, 56, 61); white-space: normal; margin-top: 0px; margin-bottom: 0px; font-family: &amp;#39;Lucida Grande&amp;#39;; min-height: 13px; background-color: rgb(255, 255, 255);"&gt;&amp;nbsp;&lt;/p&gt;&lt;p style="font-size: 12px; color: rgb(53, 56, 61); white-space: normal; margin-top: 0px; margin-bottom: 0px; font-family: &amp;#39;Lucida Grande&amp;#39;; background-color: rgb(255, 255, 255);"&gt;&lt;span style="letter-spacing: 0px;"&gt;如果你和我一样，对苹果相关的开发：Mac OS X或是iPhone有兴趣，但是第一时间看到Objective-C就会头疼并伴有发烧症状的话，疗效比较好的快速治疗方法是阅读本文。大概花二十分钟左右，而且绝不无聊的时间，你就会对Objective-C有那么一点点了解，至少读读例子不会那么头疼了。&lt;/span&gt;&lt;/p&gt;</description></item><item><title>Objective-C Learning Notes - Base Note1</title><link>https://adolsai.com/archives/Objective-C-Learning-Notes---Base-Note1.html</link><pubDate>Fri, 20 Feb 2015 00:54:04 +0800</pubDate><guid>https://adolsai.com/archives/Objective-C-Learning-Notes---Base-Note1.html</guid><description>&lt;p&gt;来源:&lt;a href="http://www.cocoachina.com/bbs/read.php?tid-167908.html" _src="http://www.cocoachina.com/bbs/read.php?tid-167908.html"&gt;http://www.cocoachina.com/bbs/read.php?tid-167908.html&lt;/a&gt;&lt;/p&gt;</description></item><item><title>Objective-C Learning Notes - UIScrollView</title><link>https://adolsai.com/archives/Objective-C-Learning-Notes---UIScrollView.html</link><pubDate>Fri, 20 Feb 2015 00:47:00 +0800</pubDate><guid>https://adolsai.com/archives/Objective-C-Learning-Notes---UIScrollView.html</guid><description>&lt;p&gt;&#10; 原文 shit 一样的翻译:&#10;&lt;/p&gt;&#10;&lt;blockquote&gt;&#10; &lt;p&gt;&#10; &amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;在滚动过程中,其实是在修改远点的坐标. 当手指触摸后, UIScrollView 会使用一个计时器暂时拦截触摸事件. 假如在计时器到点后没有发生手指移动事件, 那么 UIScrollView 发送tracking events 到被单击的 subview. 假如在计时器到点之前发生了移动事件,那么 UIScrollView 取消 tracking 自己发生移动.&#10; &lt;/p&gt;&#10;&lt;/blockquote&gt;&#10;&lt;p&gt;&#10; 初始化:&#10;&lt;/p&gt;&#10;&lt;pre class="brush:cpp;toolbar:false"&gt;UIScrollView *sv = [[UIScrollView alloc]initWithFrame:CGRectMake(0.0,0.0,self.view.frame.size.width,400.0)];&lt;/pre&gt;</description></item><item><title>Objective-C Learning Notes - UIWebView4(坑)</title><link>https://adolsai.com/archives/Objective-C-Learning-Notes---UIWebView4.html</link><pubDate>Thu, 19 Feb 2015 21:11:00 +0800</pubDate><guid>https://adolsai.com/archives/Objective-C-Learning-Notes---UIWebView4.html</guid><description>&lt;p class="p1"&gt;在 iOS 应用中,当使用 UIWebView 控件在屏幕中显示指定的网页后,我们可以通过触摸的方式浏览指定的网页.&lt;/p&gt;&lt;p class="p1"&gt;在具体实现时,是通过 webView:shouldStartLoadWithRequest:navigationType 方法来实现的.&lt;/p&gt;&lt;p class="p1"&gt;其中 NavigationType 包括如下所示的可选参数值:&lt;/p&gt;&lt;ul class=" list-paddingleft-2" style="list-style-type: disc;"&gt;&lt;li&gt;&lt;p class="p1"&gt;UIWebViewNavigationTypeLinkClick //链接被触摸时请求这个链接&lt;/p&gt;&lt;/li&gt;&lt;li&gt;&lt;p class="p1"&gt;UIWebViewNavigationTypeFormSubmitted //form 被提交时请求这个 form 的内容&lt;/p&gt;&lt;/li&gt;&lt;li&gt;&lt;p class="p1"&gt;UIWebViewNavigationTypeBackForward //当通过 goBack 或者 goForward进行页面转移时移动目标 URL&lt;/p&gt;&lt;/li&gt;&lt;li&gt;&lt;p class="p1"&gt;UIWebViewNavigationTypeReload //当页面重新导入时导入这个 URL&lt;/p&gt;&lt;/li&gt;&lt;li&gt;&lt;p class="p1"&gt;UIWebViewNavigationTyoeOrther //使用 loadRequest 方法读取内容&lt;br/&gt;&lt;/p&gt;&lt;/li&gt;&lt;/ul&gt;&lt;p class="p1"&gt;&lt;span class="s1"&gt;&lt;br/&gt;&lt;/span&gt;&lt;/p&gt;</description></item><item><title>Objective-C Learning Notes - UIWebView3</title><link>https://adolsai.com/archives/Objective-C-Learning-Notes---UIWebView3.html</link><pubDate>Thu, 19 Feb 2015 19:52:00 +0800</pubDate><guid>https://adolsai.com/archives/Objective-C-Learning-Notes---UIWebView3.html</guid><description>&lt;p&gt;&#10; 加载 html 代码:&#10;&lt;/p&gt;&#10;&lt;p&gt;&#10; 通过使用 UIWebView 的 loadHTMLString:baseURL 方法加载显示如下 HTML 代码:&#10;&lt;/p&gt;&#10;&lt;pre class="brush:cpp;toolbar:false"&gt;&amp;quot;&amp;lt;br/&amp;gt;&amp;lt;br/&amp;gt;&amp;lt;br/&amp;gt;&amp;lt;b&amp;gt;[手机号码]&amp;lt;/b&amp;gt;&amp;quot;&#10; &amp;quot;000-00000-0000&amp;lt;hr/&amp;gt;&amp;quot;&#10; &amp;quot;&amp;lt;b&amp;gt;[主页]&amp;lt;/b&amp;gt;&amp;lt;br/&amp;gt;&amp;quot;&#10; &amp;quot;http://www.baidu.com/&amp;quot;;&lt;/pre&gt;&#10;&lt;p class="p1"&gt;&#10; &lt;span class="s1"&gt;&lt;/span&gt;&lt;br/&gt;&#10;&lt;/p&gt;</description></item><item><title>Objective-C Learning Notes - UIWebView2</title><link>https://adolsai.com/archives/Objective-C-Learning-Notes---UIWebView2.html</link><pubDate>Thu, 19 Feb 2015 01:00:28 +0800</pubDate><guid>https://adolsai.com/archives/Objective-C-Learning-Notes---UIWebView2.html</guid><description>&lt;p dir="ltr"&gt;&#10; 使用 UIWebView 加载/显示 PDF Word JPEG 文件&#10;&lt;/p&gt;&#10;&lt;p dir="ltr"&gt;&#10; 关键代码:&#10;&lt;/p&gt;&#10;&lt;p dir="ltr"&gt;&#10; PDF:&#10;&lt;/p&gt;&#10;&lt;pre class="brush:cpp;toolbar:false"&gt;NSString *path = [[NSBundle mainBundle] pathForResource: @&amp;quot;fileName&amp;quot; ofType: @&amp;quot;pdf&amp;quot;];&#10;NSData *data = [NSData dataWithContentOfFile: path];&#10;[myWebView loadData: data MIMEType: @&amp;quot;application/pdf&amp;quot; textEncodingName:nil baseURL: nil];&lt;/pre&gt;&#10;&lt;p dir="ltr"&gt;&#10; &lt;br/&gt;&#10;&lt;/p&gt;</description></item><item><title>Objective-C Learning Notes - UIWebView</title><link>https://adolsai.com/archives/Objective-C-Learning-Notes---UIWebView.html</link><pubDate>Wed, 18 Feb 2015 23:16:00 +0800</pubDate><guid>https://adolsai.com/archives/Objective-C-Learning-Notes---UIWebView.html</guid><description>&lt;p&gt;在 iOS 应用中, Web 视图(UIWebView)是没有边框的 safari 窗口,可以将其加入应用程序并以编程方式进行控制. 通过使用这个类可以显示 HTML, 加载网页及支持缩放.&lt;/p&gt;&lt;p&gt;UIWebView 还可以用于显示如下文件:&lt;/p&gt;&lt;ul class=" list-paddingleft-2" style="list-style-type: disc;"&gt;&lt;li&gt;&lt;p&gt;HTML, 图像和 CSS&lt;/p&gt;&lt;/li&gt;&lt;li&gt;&lt;p&gt;Word 文档(.doc/.docx)&lt;/p&gt;&lt;/li&gt;&lt;li&gt;&lt;p&gt;Excel 电子表格(.xls/.xlsx)&lt;/p&gt;&lt;/li&gt;&lt;li&gt;&lt;p&gt;Keynote 演示文稿(.key.zip)&lt;/p&gt;&lt;/li&gt;&lt;li&gt;&lt;p&gt;Numbers 电子表格(.numbers.zip)&lt;/p&gt;&lt;/li&gt;&lt;li&gt;&lt;p&gt;Pages 文档(.pages.zip)&lt;/p&gt;&lt;/li&gt;&lt;li&gt;&lt;p&gt;PDF文档(.pdf)&lt;/p&gt;&lt;/li&gt;&lt;li&gt;&lt;p&gt;PowerPoint 演示文档(.ppt/pptx)&lt;/p&gt;&lt;/li&gt;&lt;/ul&gt;</description></item><item><title>Objective-C Learning Notes - UISegmentControl 2</title><link>https://adolsai.com/archives/Objective-C-Learning-Notes---UISegmentControl-2.html</link><pubDate>Mon, 16 Feb 2015 00:12:00 +0800</pubDate><guid>https://adolsai.com/archives/Objective-C-Learning-Notes---UISegmentControl-2.html</guid><description>&lt;p&gt;选中时修改 segment 图片:&lt;/p&gt;&lt;p class="p1"&gt;&lt;span class="s1"&gt;&lt;/span&gt;&lt;/p&gt;</description></item><item><title>Objective-C Learning Notes - UISegmentControl</title><link>https://adolsai.com/archives/Objective-C-Learning-Notes---UISegmentControl.html</link><pubDate>Fri, 13 Feb 2015 23:48:55 +0800</pubDate><guid>https://adolsai.com/archives/Objective-C-Learning-Notes---UISegmentControl.html</guid><description>&lt;p&gt;按钮栏&lt;/p&gt;&lt;p&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;可以结合使用索引和实例方法 titleForSegmentAtIndex 来获取每个分段的标题.要获取分段控件中当前选定的标题,可以使用以下代码段:&lt;br/&gt;&lt;/p&gt;&lt;p&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;[mySegment titleForSegmentAtIndex:mySegment.selectSegmentIndex];&lt;br/&gt;&lt;/p&gt;&lt;p&gt;&lt;br/&gt;&lt;/p&gt;&lt;p&gt;动态实现:&lt;/p&gt;&lt;p&gt;&lt;br/&gt;&lt;/p&gt;&lt;p class="p1"&gt;&lt;span class="s1"&gt;&lt;/span&gt;&lt;/p&gt;&lt;pre class="brush:cpp;toolbar:false"&gt;#import&amp;nbsp;&amp;lt;UIKit/UIKit.h&amp;gt;&#10;@interface&amp;nbsp;ViewController&amp;nbsp;:&amp;nbsp;UIViewController&#10;@property&amp;nbsp;(strong,nonatomic)UISegmentedControl&amp;nbsp;*mySegmentControl;&#10;@end&lt;/pre&gt;&lt;p class="p4"&gt;&lt;span class="s2"&gt;&lt;/span&gt;&lt;br/&gt;&lt;/p&gt;</description></item><item><title>Objective-C Learning Notes - Second practice using UISlider and UISwitch</title><link>https://adolsai.com/archives/Objective-C-Learning-Notes---Second-practice-using-UISlider-and-UISwitch.html</link><pubDate>Thu, 12 Feb 2015 22:09:00 +0800</pubDate><guid>https://adolsai.com/archives/Objective-C-Learning-Notes---Second-practice-using-UISlider-and-UISwitch.html</guid><description>&lt;p class="p1"&gt;&lt;span class="s1"&gt;&lt;/span&gt;&lt;/p&gt;&lt;p style="text-align: center;"&gt;&lt;br/&gt;&lt;/p&gt;&lt;p&gt;&lt;br/&gt;&lt;/p&gt;&lt;pre class="brush:cpp;toolbar:false"&gt;#import&amp;nbsp;&amp;lt;UIKit/UIKit.h&amp;gt;&#10;@interface&amp;nbsp;ViewController&amp;nbsp;:&amp;nbsp;UIViewController&#10;@property&amp;nbsp;(weak,&amp;nbsp;nonatomic)&amp;nbsp;IBOutlet&amp;nbsp;UILabel&amp;nbsp;*sliderLabel;&#10;@property&amp;nbsp;(weak,&amp;nbsp;nonatomic)&amp;nbsp;IBOutlet&amp;nbsp;UISlider&amp;nbsp;*mySlider;&#10;@property&amp;nbsp;(weak,&amp;nbsp;nonatomic)&amp;nbsp;IBOutlet&amp;nbsp;UISwitch&amp;nbsp;*leftSlider;&#10;@property&amp;nbsp;(weak,&amp;nbsp;nonatomic)&amp;nbsp;IBOutlet&amp;nbsp;UISwitch&amp;nbsp;*rightSlider;&#10;-&amp;nbsp;(IBAction)sliderChanged:(id)sender;&#10;-&amp;nbsp;(IBAction)switchChanged:(id)sender;&#10;@end&lt;/pre&gt;&lt;p class="p4"&gt;&lt;span class="s2"&gt;&lt;/span&gt;&lt;br/&gt;&lt;/p&gt;</description></item><item><title>Objective-C Learning Notes - UISwitch2</title><link>https://adolsai.com/archives/Objective-C-Learning-Notes-UISwitch2.html</link><pubDate>Wed, 11 Feb 2015 22:12:00 +0800</pubDate><guid>https://adolsai.com/archives/Objective-C-Learning-Notes-UISwitch2.html</guid><description>&lt;p&gt;终于有一个正常一点的样例程序了,什么鬼排版啊!!!&lt;/p&gt;&lt;p&gt;简单演示 UISwitch 的常用属性, isOn...&lt;/p&gt;</description></item><item><title>Objective-C Learning Notes - UISwitch (Rewrite)(坑)</title><link>https://adolsai.com/archives/Objective-C-Learning-Notes-UISwitch.html</link><pubDate>Wed, 11 Feb 2015 22:03:00 +0800</pubDate><guid>https://adolsai.com/archives/Objective-C-Learning-Notes-UISwitch.html</guid><description>&lt;p&gt;重写 UISwitch 类以添加修改其文本信息的方法:&lt;/p&gt;&lt;p class="p1"&gt;好讨厌一本书里面的样例程序各个编写习惯都不一样....&lt;/p&gt;&lt;pre class="brush:cpp;toolbar:false"&gt;//&amp;nbsp;&amp;nbsp;UISwitchCustom.h&#10;#import&amp;nbsp;&amp;lt;UIKit/UIKit.h&amp;gt;&#10;/**&#10;&amp;nbsp;添加一个名为&amp;nbsp;extended&amp;nbsp;的&amp;nbsp;category,&amp;nbsp;声明一下&amp;nbsp;UISwitch&amp;nbsp;的&amp;nbsp;setAlertnateColors&amp;nbsp;消息,否则在使用的时候会出现找不到该消息的警告.其实&amp;nbsp;setAlertnateColors&amp;nbsp;已经在&amp;nbsp;UISwitch&amp;nbsp;中实现,只是没u&amp;nbsp;头文件中公开而已,所以在此做一个声明...&#10;&amp;nbsp;当调用setAlertnateColors:YES&amp;nbsp;时,UISwitch&amp;nbsp;的状态为&amp;quot;on&amp;quot;时显示为橙色.&#10;&amp;nbsp;**/&#10;@interface&amp;nbsp;UISwitch&amp;nbsp;(extended)&#10;-&amp;nbsp;(void)&amp;nbsp;setAlertnateColors:(BOOL)boolean;&#10;@end&#10;//自定义&amp;nbsp;slider&amp;nbsp;类,方便存储数据而已(好像&amp;nbsp;wwwww&#10;@interface&amp;nbsp;_UISwitchSlider&amp;nbsp;:&amp;nbsp;UISlider&#10;@end&#10;//自定义&amp;nbsp;UISwitch&amp;nbsp;类并拓展可以修改按钮上面的文字方法&#10;@interface&amp;nbsp;UISwitchCustom&amp;nbsp;:&amp;nbsp;UISwitch&#10;//设置左边的文字&#10;-&amp;nbsp;(void)&amp;nbsp;setLeftLabelText:(NSString&amp;nbsp;*)labelText&#10;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;font:(UIFont&amp;nbsp;*)labelFont&#10;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;color:(UIColor&amp;nbsp;*)labelColor;&#10;//设置右边的文字&#10;-&amp;nbsp;(void)&amp;nbsp;setRightLabelText:(NSString&amp;nbsp;*)labelText&#10;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;font:(UIFont&amp;nbsp;*)labelFont&#10;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;color:(UIColor&amp;nbsp;*)labelColor;&#10;//一个方便创建&amp;nbsp;Label&amp;nbsp;的方法而已,其实它不应该出现在这里的吧...&#10;-&amp;nbsp;(UILabel&amp;nbsp;*)createLabelWithText:(NSString&amp;nbsp;*)labelText&#10;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;font:(UIFont&amp;nbsp;*)labelFont&#10;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;color:(UIColor&amp;nbsp;*)labelColor;&#10;@end&lt;/pre&gt;</description></item><item><title>Objective-C Learning Notes - UIImage(坑)</title><link>https://adolsai.com/archives/Objective-C-Learning-Notes-UIImage.html</link><pubDate>Wed, 11 Feb 2015 20:34:00 +0800</pubDate><guid>https://adolsai.com/archives/Objective-C-Learning-Notes-UIImage.html</guid><description>&lt;p&gt;使用 UIImage 显示图片:(通过 UIImage 的方法 drawAtPoint 或者drawInRect)&lt;/p&gt;</description></item><item><title>Objective-C Learning Notes - UIImageView</title><link>https://adolsai.com/archives/Objective-C-Learning-Notes-UIImageView.html</link><pubDate>Tue, 10 Feb 2015 22:48:00 +0800</pubDate><guid>https://adolsai.com/archives/Objective-C-Learning-Notes-UIImageView.html</guid><description>&lt;p&gt;UIImageView&lt;br/&gt;&lt;/p&gt;&lt;p&gt;&lt;strong&gt;创建方法&lt;/strong&gt;&lt;/p&gt;&lt;ul class=" list-paddingleft-2" style="list-style-type: disc;"&gt;&lt;li&gt;&lt;p&gt;UIImageView *imageView1 = [[UIImageView alloc] init];&lt;/p&gt;&lt;/li&gt;&lt;li&gt;&lt;p&gt;UIImageView *imageView2 = [[UIImageView alloc] initWithFrame:(CGRect)];&lt;/p&gt;&lt;/li&gt;&lt;li&gt;&lt;p&gt;UIImageView *imageView3 = [[UIImageView alloc] initWithImage:(UIImage *)];&lt;/p&gt;&lt;/li&gt;&lt;li&gt;&lt;p&gt;UIImageView *imageView4 = [[UIImageView alloc] initWithImage:(UIImage *) highlightedImage:(UIImage *)];&lt;/p&gt;&lt;/li&gt;&lt;li&gt;&lt;p&gt;UIImageView *imageView5 = [[UIImageView alloc] initWithCoder:(NSCoder *)];&lt;/p&gt;&lt;/li&gt;&lt;/ul&gt;&lt;p&gt;&lt;br/&gt;&lt;/p&gt;</description></item><item><title>Objective-C Learning Notes - UIStepper</title><link>https://adolsai.com/archives/Objective-C-Learning-Notes-UIStepper.html</link><pubDate>Tue, 10 Feb 2015 21:45:00 +0800</pubDate><guid>https://adolsai.com/archives/Objective-C-Learning-Notes-UIStepper.html</guid><description>&lt;p&gt;Base Attributes:&lt;/p&gt;&lt;ul class=" list-paddingleft-2" style="list-style-type: disc;"&gt;&lt;li&gt;&lt;p&gt;value;&lt;/p&gt;&lt;/li&gt;&lt;li&gt;&lt;p&gt;minimumValue;&lt;/p&gt;&lt;/li&gt;&lt;li&gt;&lt;p&gt;maximumValue;&lt;/p&gt;&lt;/li&gt;&lt;li&gt;&lt;p&gt;stepValue;&lt;/p&gt;&lt;/li&gt;&lt;/ul&gt;&lt;p&gt;&lt;br/&gt;&lt;/p&gt;&lt;p&gt;Other Control Attributes:&lt;/p&gt;&lt;ul class=" list-paddingleft-2" style="list-style-type: disc;"&gt;&lt;li&gt;&lt;p&gt;continuous;//是否持续触发 UIControlEventValueChanged 事件&lt;/p&gt;&lt;/li&gt;&lt;li&gt;&lt;p&gt;autorepeat;//按住的时候是否持续触发,默认是 YES&lt;/p&gt;&lt;/li&gt;&lt;li&gt;&lt;p&gt;wraps;//是否在 min 和 max 之间循环,默认 NO&lt;br/&gt;&lt;/p&gt;&lt;/li&gt;&lt;/ul&gt;&lt;p&gt;&lt;br/&gt;&lt;/p&gt;</description></item><item><title>Objective-C Learning Notes - UISlider</title><link>https://adolsai.com/archives/Objective-C-Learning-Notes-UISlider.html</link><pubDate>Mon, 09 Feb 2015 22:28:00 +0800</pubDate><guid>https://adolsai.com/archives/Objective-C-Learning-Notes-UISlider.html</guid><description>&lt;p&gt;base attributes:&lt;/p&gt;&lt;ul class=" list-paddingleft-2" style="list-style-type: disc;"&gt;&lt;li&gt;&lt;p&gt;minimumValue;&lt;/p&gt;&lt;/li&gt;&lt;li&gt;&lt;p&gt;maximumValue;&lt;/p&gt;&lt;/li&gt;&lt;li&gt;&lt;p&gt;UIImage.&lt;/p&gt;&lt;/li&gt;&lt;/ul&gt;&lt;p&gt;&lt;br/&gt;</description></item><item><title>Objective-C Learning Notes - First practice using UITextField and UITextView and UIButton</title><link>https://adolsai.com/archives/Objective-C-Learning-Notes-First-practice.html</link><pubDate>Mon, 09 Feb 2015 19:36:00 +0800</pubDate><guid>https://adolsai.com/archives/Objective-C-Learning-Notes-First-practice.html</guid><description>&lt;p&gt;联合使用文本框,文本视图和按钮创建个简单的故事生成器(伪:&lt;/p&gt;&lt;p&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;让用户通过3个文本框(UITextField)输入一个名词(地点),一个动词和一个数字.用户还可以输入或修改一个模板,该模板包含将生成的故事概要.由于模板可能多行,因此将使用一个文本视图(UITextView)来显示这些信息.当用户按下按钮(UIButton)时将触发一个操作,该操作将生成故事并将其输入到另一个文本视图中.&lt;br/&gt;&lt;/p&gt;&lt;p&gt;&lt;br/&gt;&lt;/p&gt;</description></item><item><title>Objective-C Learning Notes - UIButton</title><link>https://adolsai.com/archives/Objective-C-Learning-Notes-UIButton.html</link><pubDate>Thu, 05 Feb 2015 00:57:00 +0800</pubDate><guid>https://adolsai.com/archives/Objective-C-Learning-Notes-UIButton.html</guid><description>&lt;p&gt;UIButton&lt;/p&gt;&lt;p&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;Base Attributes:&lt;/p&gt;&lt;ul class=" list-paddingleft-2" style="list-style-type: disc;"&gt;&lt;li&gt;&lt;p&gt;UIButtonType:&lt;/p&gt;&lt;/li&gt;&lt;ul class=" list-paddingleft-2" style="list-style-type: square;"&gt;&lt;li&gt;&lt;p&gt;UIButtonTypeCustom&lt;/p&gt;&lt;/li&gt;&lt;li&gt;&lt;p&gt;UIButtonTypeRoundedRect&lt;/p&gt;&lt;/li&gt;&lt;li&gt;&lt;p&gt;UIButtonTypeDetailDisclosure&lt;/p&gt;&lt;/li&gt;&lt;li&gt;&lt;p&gt;UIButtonTypeInfoLight&lt;/p&gt;&lt;/li&gt;&lt;li&gt;&lt;p&gt;UIButtonTypeInfoDark&lt;/p&gt;&lt;/li&gt;&lt;li&gt;&lt;p&gt;UIButtonTypeContactAdd&lt;/p&gt;&lt;/li&gt;&lt;/ul&gt;&lt;/ul&gt;&lt;p&gt;&lt;br/&gt;&lt;/p&gt;</description></item><item><title>Objective-C Learning Notes - UILabel</title><link>https://adolsai.com/archives/object-c-learning-notes-uilabel-and-uibutton.html</link><pubDate>Tue, 03 Feb 2015 21:29:00 +0800</pubDate><guid>https://adolsai.com/archives/object-c-learning-notes-uilabel-and-uibutton.html</guid><description>&lt;p&gt;UILabel&lt;br/&gt;&lt;/p&gt;&lt;p&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;Base Attributes：&lt;br/&gt;&lt;/p&gt;&lt;ul class=" list-paddingleft-2" style="list-style-type: disc;"&gt;&lt;li&gt;&lt;p&gt;font&lt;/p&gt;&lt;/li&gt;&lt;li&gt;&lt;p&gt;size&lt;/p&gt;&lt;/li&gt;&lt;li&gt;&lt;p&gt;backgroundColor &amp;amp; align&lt;/p&gt;&lt;/li&gt;&lt;ul class=" list-paddingleft-2" style="list-style-type: square;"&gt;&lt;li&gt;&lt;p&gt;UITextAlignmentLeft&lt;/p&gt;&lt;/li&gt;&lt;li&gt;&lt;p&gt;UITextAlignmentCenter&lt;/p&gt;&lt;/li&gt;&lt;li&gt;&lt;p&gt;UITextAlignmentRight&lt;/p&gt;&lt;/li&gt;&lt;/ul&gt;&lt;li&gt;&lt;p&gt;textColor&lt;/p&gt;&lt;/li&gt;&lt;li&gt;&lt;p&gt;adjustsFontSizeToFitWidth&lt;/p&gt;&lt;/li&gt;&lt;/ul&gt;&lt;p&gt;&lt;br/&gt;&lt;/p&gt;</description></item><item><title>Objective-C Learning Notes - UITextField and UITextView</title><link>https://adolsai.com/archives/object-c-learning-notes-uitextfiled-and-uitextview.html</link><pubDate>Mon, 02 Feb 2015 22:32:00 +0800</pubDate><guid>https://adolsai.com/archives/object-c-learning-notes-uitextfiled-and-uitextview.html</guid><description>&lt;p&gt;UITextField Attribute that often used:&lt;/p&gt;&lt;ul class=" list-paddingleft-2" style="list-style-type: disc;"&gt;&lt;li&gt;&lt;p&gt;borderStyle;&lt;/p&gt;&lt;/li&gt;&lt;li&gt;&lt;p&gt;background;&lt;br/&gt;&lt;/p&gt;&lt;/li&gt;&lt;li&gt;&lt;p&gt;backgroundColor;&lt;/p&gt;&lt;/li&gt;&lt;li&gt;&lt;p&gt;clearButtonMode;&lt;/p&gt;&lt;/li&gt;&lt;ul class=" list-paddingleft-2" style="list-style-type: square;"&gt;&lt;li&gt;&lt;p&gt;UITextFieldViewModeAlways;&lt;/p&gt;&lt;/li&gt;&lt;li&gt;&lt;p&gt;UITextFieldViewModeNever;&lt;/p&gt;&lt;/li&gt;&lt;li&gt;&lt;p&gt;UITextFieldViewModeWhileEditing;&lt;/p&gt;&lt;/li&gt;&lt;li&gt;&lt;p&gt;UITextFiledViewModeUnlessEditing;&lt;/p&gt;&lt;/li&gt;&lt;/ul&gt;&lt;/ul&gt;&lt;p&gt;&lt;br/&gt;&lt;/p&gt;</description></item><item><title>Objective-C Learning Notes - Cocoa Touch framework 1 list</title><link>https://adolsai.com/archives/56.html</link><pubDate>Wed, 14 Jan 2015 21:54:00 +0800</pubDate><guid>https://adolsai.com/archives/56.html</guid><description>&lt;p&gt;从今天开始好好复习整理一下学过的东西。&lt;/p&gt;&#10;&lt;blockquote&gt;&lt;h3&gt;&lt;strong&gt;From:&amp;nbsp;&lt;a href="https://developer.apple.com/library/ios/documentation/Miscellaneous/Conceptual/iPhoneOSTechOverview/Introduction/Introduction.html#//apple_ref/doc/uid/TP40007898"&gt;iOS Technology Overview&lt;/a&gt;&lt;/strong&gt;&lt;/h3&gt;&lt;/blockquote&gt;&lt;h3&gt;&lt;strong&gt;&lt;br/&gt;&lt;/strong&gt;&lt;/h3&gt;&lt;p&gt;容许我盗个图：&lt;/p&gt;&lt;h3 style="text-align: center;"&gt;&lt;strong&gt;&lt;img loading="lazy" decoding="async" src="https://adolsai.com/uploads/2015/07/03/1435893078217797.webp" title="1435893078217797.png" alt="SystemLayers_2x.png"/&gt;&lt;/strong&gt;&lt;/h3&gt;&lt;h3&gt;&lt;strong&gt;framework used in Cocoa Touch&lt;/strong&gt;&lt;/h3&gt;&lt;p&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;Music &amp;amp; Movie:&lt;br/&gt;&lt;/p&gt;&lt;ul class=" list-paddingleft-2" style="list-style-type: disc;"&gt;&lt;li&gt;&lt;p&gt;Core Audio&lt;/p&gt;&lt;/li&gt;&lt;li&gt;&lt;p&gt;Open Al&lt;/p&gt;&lt;/li&gt;&lt;li&gt;&lt;p&gt;Media Library&lt;/p&gt;&lt;/li&gt;&lt;li&gt;&lt;p&gt;AV Foundation&lt;/p&gt;&lt;/li&gt;&lt;/ul&gt;&lt;p&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;br/&gt;&lt;/p&gt;</description></item></channel></rss>