background preloader

Why mobile web apps are slow

Why mobile web apps are slow
I’ve had an unusual number of interesting conversations spin out of my previous article documenting that mobile web apps are slow. This has sparked some discussion, both online and IRL. But sadly, the discussion has not been as… fact-based as I would like. So what I’m going to do in this post is try to bring some actual evidence to bear on the problem, instead of just doing the shouting match thing. You’ll see benchmarks, you’ll hear from experts, you’ll even read honest-to-God journal papers on point. There are–and this is not a joke–over 100 citations in this blog post. Now I am going to warn you–this is a very freaking long article, weighing in at very nearly 10k words. I write in part because this topic has been discussed–endlessly–in soundbyte form. A quick review My previous blog post documented, based on SunSpider benchmarks, that the state of the world, today, is that mobile web apps are slow. You should really go read that article, but I will show you the benchmark anyway: Why?

ios - What kind of leaks does automatic reference counting in Objective-C not prevent or minimize Programming with Objective-C: Encapsulating Data In addition to the messaging behavior covered in the previous chapter, an object also encapsulates data through its properties. This chapter describes the Objective-C syntax used to declare properties for an object and explains how those properties are implemented by default through synthesis of accessor methods and instance variables. If a property is backed by an instance variable, that variable must be set correctly in any initialization methods. If an object needs to maintain a link to another object through a property, it’s important to consider the nature of the relationship between the two objects. Although memory management for Objective-C objects is mostly handled for you through Automatic Reference Counting (ARC), it’s important to know how to avoid problems like strong reference cycles, which lead to memory leaks. This chapter explains the lifecycle of an object, and describes how to think in terms of managing your graph of objects through relationships. For example:

Comparison of the Available iOS Charting Libraries In this post, I explore four of the available iOS charting libraries and investigate the features, API, and pros and cons of each. In order to conduct a fair investigation, I have developed a comparison framework which loads historic stock market data from the Yahoo Finance API. My findings were that Core Plot had a strong set of documentation, yet was a little light on features and built in functionality. Shinobi Charts had super fast performance, was extremely easy to integrate and had a clean, friendly API. The Framework The framework can be easily extended to display the data fetched in different view controllers that can be set up to use various charting libraries. Framework Library / API Usage Rather than generating random data or using the same hard-coded data every time the comparison was run, stock market data is fetched from the Yahoo Finance API in CSV format . Framework Structure The framework is based around a Data Transfer Object (DTO) named StockPriceDataContainer. KeepEdge

Beginner’s Guide to iOS Development: The Interface – Part I Apple has been a leading industry in the mobile world for years with its iPhone and iPad series. Despite the hype it can create with every official release like iOS 5, it’s also holding a large portion of market shares in the mobile platform, and this is probably the reason that most clients will want their app to exist in the Apple’s app store, thus becoming the reason for developers to learn and build the iPhone app. (Image Source: Apple Developer) The good news is, iPhone application development is not as hard as you might think, and this post exists as a comprehensive guide to walk you through the complete process of building an application for iPhone. So whether you’re learning for business or you just have an amazing app idea that might make you a millionaire, let’s get started on building your first iPhone app! Why Develop for Apple? I see this question asked frequently so I want to explain why you should be interested in iPhone development. Planning your iPhone App Structure Reeder

iOS 7: Hidden Gems and Workarounds - iOS 7 - objc.io issue #5 When iOS 7 was first announced, Apple developers all over the world tried to compile their apps, and spent the next few months fixing whatever was broken, or even rebuilding the app from scratch. As a result, there wasn’t much time to take a closer look at what’s new in iOS 7. Apart from the obvious great small tweaks like NSArray’s firstObject, which has been retroactively made public all the way back to iOS 4, there are a lot more hidden gems waiting to be discovered. Smooth Fade Animations I’m not talking about the new spring animation APIs or UIDynamics, but something more subtle. An interesting detail is that _UIBackdropView (which is used as the background view inside UIToolbar or UIPopoverView) can’t animate its blur if allowsGroupOpacity is enabled, so you might want to temporarily disable this when you do an alpha transform. The edge antialiasing property can be useful if you want to replicate the animation that Safari does when showing all tabs. Blocking Animations to: Pagination

Technical Q&A QA1747: Debugging Deployed iOS Apps Technical Q&A QA1747 Q: How can I debug a deployed app without Xcode's debugger? A: Once you have deployed your app, either through the App Store or as an Ad Hoc or Enterprise build, you won't be able to attach Xcode's debugger to it. To debug problems you'll need analyze Crash Logs and Console output from the device. For more information on writing rich NSLog statements, see Improved logging in Objective-C. Getting Crash Logs and Console Output Getting Crash Logs and Console Output With Xcode Even though you won't be able to run the app in Xcode's debugger, Xcode can still give you all the information you need to debug the problem. 1) Plug in the device and open Xcode 2) Open the Organizer window and select the Devices tab 3) Under the DEVICES section in the left column, expand the listing for the device 4) Select Device Logs to see crash logs or select Console to see Console output Getting Console Output Without Xcode 1) Plug in the device and open iPhone Configuration Utility

Text Kit Tutorial Note from Ray: This is an abbreviated version of a chapter from iOS 7 by Tutorials that we are releasing as part of the iOS 7 Feast. We hope you enjoy! The way that text is rendered in iOS has changed a lot over the years as more powerful features and capabilities have been added. This latest iOS release brings with it some of the most significant text rendering changes yet. In the old days before iOS 6, web views were usually the easiest way to render text with mixed styling, such as bold, italics, or even colors. Last year, iOS 6 added attributed string support to a number of UIKit controls. In iOS 6, text-based UIKit controls in iOS 6 were based on both WebKit and Core Graphics’ string drawing functions, as illustrated in the hierarchical diagram below: Note: Does anything strike you as odd in this diagram? Attributed strings in iOS 6 were indeed helpful for many use cases. However, this year in iOS 7 there’s an easier way. Ready to create something of note? Getting started Dynamic type

iOS Dev Tools - The Greatest iOS Development Tools

Related: