Coder Social home page Coder Social logo

ios-pro's Introduction

《 iOS 开发进阶》随书示例程序和勘误

##重要信息

##图书购买链接

随书示例程序

文件路径 文件说明 下载链接
/DemoProjects/Flurry.zip 统计工具Flurry 章节示例程序 下载
/DemoProjects/CoreText.zip 基于CoreText的排版引擎 章节示例程序 下载
/DemoProjects/UIWindow.zip UIWindow 章节示例程序 下载
/DemoProjects/RetainCount.zip 理解内存管理-引用计数 章节示例程序 下载
/DemoProjects/RetainCycle.zip 理解内存管理-循环引用问题 章节示例程序 下载
/DemoProjects/CreateClass.zip Objective-C对象模型-动态创建对象 章节示例 下载
/DemoProjects/TaggedPointer.zip Tagged Pointer对象 章节示例程序 下载

勘误

  • 第3页,我使用的是Newsfy一句中单词拼写错误,应该是 Newsify
  • 第10页,occhina拼写错误,应该是oschina
  • 第34页,第一张图片的配图应该是第35页的首张图。
  • 第34页,用reveal连接真机调试章节,由于苹果的编译器升级,加载reveal的步骤更多了,详细的见:http://support.revealapp.com/kb/getting-started/integrating-reveal-add-reveal-to-your-xcode-project
  • 第81页,倒数第二行(C++11 提供了基于引用计数的智能指针 share_prt).这里面应该将 share_prt 改为 share_ptr
  • 第108页,UIWindow章节中的示例代码中使用了resignKeyWindow方法,但是苹果不推荐直接调用该方法,推荐的改法是,隐藏的时候将window.hiden=YES,然后设置为nil,再调用原来的window的 makeKeyWindow方法。
  • 第108页,苹果的进入后台的回调函数在新的iOS8中无法显示自定义的UIWindow,可以改成在applicationDidBecomeActive中调用UIWindow的显示
  • 第123页,Hybird拼写错误,应该是Hybrid
  • 第136页,第一行末尾,"一嗨租车虽然已经修改了登录协议"一句。应该将一嗨租车改成神州租车
  • 第192页,18.2.8小节,"而master分支增加了一个名为ApeDropDownRightArrow.png的资源文件"一句。应该将ApeDropDownRightArrow.png改为gDifficultyBar.png
  • 第200页,第3行。"学习到它们是用UIWebView的方式来实现的编译界面"。应该将其中的编译改成编辑
  • 第202页,生成ipa除了可以使用书中介绍的方法外,更好的方法是用 xcodebuild 自己的 -exportArchive -exportFormat ipa 命令。

本书对应的“iOS开发”微信公共帐号

iOS开发

ios-pro's People

Contributors

dwarven avatar stephenzhuang avatar tangqiaoboy avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

ios-pro's Issues

136页有错误

136页有错误,第一行末尾,一嗨租车虽然已经修改了登录协议,此处根据上下文应该是神州租车

章节18.7.1 内容未说清楚

18.7.1 删除未使用的图片资源

1.括号没括上 :P
2.脚本在哪里运行没说清楚

我的理解是,应该放在xcode里运行该脚本吧,这样每次build都会删除。

截图

messages image 1440450885

勘误

p119 #import (StoreKit/StoreKit.h) 括号错了
p120 使用了viewDidUnload
p150 只解释了1到3,4到6是没解释还是排版漏了?

下载的CoreTextDemo中定制文字颜色无效问题

大神您好,最近在拜读您的 《基于 CoreText 的排版引擎:基础》,然后https://raw.githubusercontent.com/tangqiaoboy/iOS-Pro/master/DemoProjects/CoreText.zip 下载的CoreTextDemo里面,我测试的时候发现,通过range修改富文本的颜色无效,但是设置富文本的字体大小有效果!麻烦您能测试看一下吗?

测试步骤如下:

  1. 下载了CoreText的zip包
  2. 将ViewController里viewDidload的代码改成如下代码即可,我测试的时候,文字颜色改变不了,但是我将设置颜色改成设置字体大小可以生效
  • (void)viewDidLoad
    {
    [super viewDidLoad];

    CTFrameParserConfig *config = [[CTFrameParserConfig alloc] init];
    config.width = self.ctView.width;
    config.textColor = [UIColor blackColor];

    NSString *content =
    @" 对于上面的例子,我们给 CTFrameParser 增加了一个将 NSString 转 "
    " 换为 CoreTextData 的方法。"
    " 但这样的实现方式有很多局限性,因为整个内容虽然可以定制字体 "
    " 大小,颜色,行高等信息,但是却不能支持定制内容中的某一部分。"
    " 例如,如果我们只想让内容的前三个字显示成红色,而其它文字显 "
    " 示成黑色,那么就办不到了。"
    "\n\n"
    " 解决的办法很简单,我们让CTFrameParser支持接受 "
    "NSAttributeString 作为参数,然后在 NSAttributeString 中设置好 "
    " 我们想要的信息。";
    NSDictionary *attr = [CTFrameParser attributesWithConfig:config];
    NSMutableAttributedString *attributedString =
    [[NSMutableAttributedString alloc] initWithString:content
    attributes:attr];
    [attributedString addAttribute:NSForegroundColorAttributeName
    value:[UIColor redColor]
    range:NSMakeRange(0, 7)];

    CoreTextData *data = [CTFrameParser parseAttributedContent:attributedString
    config:config];
    self.ctView.data = data;
    self.ctView.height = data.height;
    self.ctView.backgroundColor = [UIColor yellowColor];
    }

Reveal调试

我觉的动态加载libReveal.dylib 是更好的办法,不会修改工程文件.

官方步骤:
1.打开工程,选择 View → Navigators → Show Breakpoint Navigator。
在面板左下角,点击 + 按钮并选择Add Symbolic Breakpoint
2.Adding Symbolic Breakpoint to Xcode project,在 Symbol 输入区内输入 UIApplicationMain 。
点击 Add Action 按钮, 确认 Action 被设置为 Debugger Command。
3.将以下内容拷贝到 Action 的输入区内:
expr (Class)NSClassFromString(@"IBARevealLoader") == nil ? (void )dlopen("/Applications/Reveal.app/Contents/SharedSupport/iOS-Libraries/libReveal.dylib", 0x2) : ((void)0)
Note: 请确认Reveal.app的路径信息符合您Mac的实际位置。
4.选中 Automatically continue after evaluating actions 选项。
5.右击刚才新创建的断点,选择 Move Breakpoint To → User → Moving the Breakpoint to the User
您可以像其他断点一样,禁用或启用此断点。All done!
Note:用户级别断点在所有的Xcode工程中都可以使用。现在在iOS模拟器上构建并运行您的应用。

地址:http://support.revealapp.com/kb/getting-started/revealxcodereveal

勘误 P125

P125 倒数第 3 行,“它比 MGTemplateEngine、CGMustache 的功能更简单。”,与上一句有歧义。

一些蛋疼的地方

一些长的命令,没有一个地方能复制命令吗?
例如第32页尾开始到33页头的那一坨命令,太长了

勘误

您好,page86第一句话中的“与”是不是需要改成“又”。

Reveal连接模拟器方式失效

巧兄,按照书中方式关联到reveal,并不能在reveal中看到想要调试的iOS程序界面... 是连接方式有变化吗?

P136

只需要扫描acess log => access log

勘误

第081页,倒数第二行(C++11 提供了基于引用计数的智能指针 share_prt).这里面应该将share_prt改为share_ptr

page114

修改UI控件的字体建议放在kCTFontDescriptorMatchingDidFinish下,否则第一次进入下载完成后字体显示不出来,要等到再次进入才能看到变化

192页错误

18.2.8 ,第6行,而master分支增加了一个名为ApeDropDownRightArrow.png的资源文件,此处应为gDifficultyBar.pn ?我看文件里面是这个

添加脚本代码

Hi Tang,

拜读了您的书,书上有很多脚本代码,不知是否可以也放到github上?

11.2.4后台运行

让程序在后台长久运行的示例代码如下:

- (void)applicationDidEnterBackground:(UIApplication *)application {
  [self beingBackgroundUpdateTask];
 //在这里加上你需要长久运行的代码
  [self endBackgroundUpdateTask];
}

- (void)beingBackgroundUpdateTask {
    self.backgroundUpdateTask =  [[UIApplication shareApplication] beginBackgroundTaskWithExpirationHandler:^{
    [self endBackgroundUpdateTask];
}];
}

- (void)endBackgroundUpdateTask {
    [[UIApplication sharedApplication]  endBackgroundTask:self.backgroundUpdateTask];
    self.backgroundUpdateTask = UIBackgroundTaskInvalid;
}

1.作者第一个方法是不是想写成beginBackgroundUpdateTask以与end对应啊?
2.在beingBackgroundUpdateTask的expirationHandler中有调用endBackgroundUpdateTask,而在applicationDidEnterBackground中也有调用,这样重复调用不会有问题么?

CoreTextDemo Bug

CoreText Demo对于点击位置有一定偏差(测试上看来是x轴固定有半个字符大小的偏移),
即:在[CoreTextUtils touchContentOffsetInView: atPoint: data:] 中输出idx可以看到
点击某个字的前半部分,输出idx为当前字形的idx,点击这个字的后半部分,输出为下一个字形的idx,
虽然在真机操作的时候手指精度没这么高,但是模拟器可以操作到这个精度,而且这样的偏差可能导致一些意想不到的问题

UIWindow的demo有错

错误描述

在github上下载UIWindow.zip解压后打开,运行程序在6splus的模拟器上,直接崩溃

解决方法

PasswordInputWindow.m中的initWithFrame:中添加一行代码:

 self.rootViewController = [UIViewController new]    

仍然存在的疑虑

为什么这样就会不崩溃了,原理是什么,求作者解答.

勘误

第77页,"appledoc -help" 应该是 "appledoc --help"
两道杠

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.