Hot answers tagged

51

You need to test application on real device to at least to look how it behaves with: Real device hardware Real internet connection (including the use of a cell network vs WiFi) Your fingers instead of mouse Performance with other apps running in the background The limitations of the iPhone, like cpu, disk capacity and memory (A Simulator is not an Emulator)...


29

The API being designed follows the Rest style of resources-centric URI and CRUD operations mapped to HTTP verbs. This is your problem right here. You have limited your resources to (I'm assuming) the models in your database. As such it is taking ages to load all these resources because your server has no concept of resources that don't have a ...


25

It's mostly just throwing a big number out there because it impresses the masses. Bigger numbers are obviously superior so anything with a 64-bit processor is clearly better than something with a 32-bit processor. The new CPU is significantly better than its predecessor but, in Apple fashion, they're not going to try marketing based on tech specs - they're ...


20

One thing you'll never know when testing with emulator is how it really feels for a user holding a real device in their hand, sliding fingers on its screen. As a result, user actions that seemed smooth when simulating with touchpad on your laptop, may turn out quite cumbersome for a real device usage. To make sure that your application is OK, test it with ...


19

'Store' in this context sounds very much like a Repository or Service. In that case, this is an extremely common pattern. The flaws/problems will vary with your implementation and the problem domain. On a general level, it sounds like the book is using 'Store' to represent a level of business logic + a level of data retrieval logic that handles a set of ...


18

"Store", in the case of MVCS design patterns, tends to lean towards storage logic. In the case of iOS, this is usually a Core Data implementation. If you create a Core Data-backed template in Xcode, you'll see the "Store" aspect of this design pattern tucked away in the AppDelegate class. To take this to the next level, I will often create a singleton ...


17

One of Apple's criteria for accepting a program is whether or not it makes calls to unsupported Apple API's (or other bad stuff). By requiring static linking, they can prove that the software does not make such calls. Allowing dynamic linking would allow any kind of behavior to be added later, which pretty much invalidates their approval process. Apple ...


16

To understand delegates, you have to understand protocols. A protocol is like a service contract. When an object (most often a UIViewController subclass, but not always) signs that contract, it is saying "I am interested in providing logic to back the message you send me". This is similar to NSNotificationCenter in regards to signing up for a level of ...


16

There is no "4GB wall" on ARMv7, as many ARMv7 cores support LPAE (Large Physical Address Extension), which is a concept symilar to PAE on x86, except LPAE uses 40-bit addressing. Meaning, that LPAE equipped ARMv7 can address up to 1TB of RAM. It's also important to mention that upcoming ARMv8 cores, including A7, will not use 64-bit physical addressing. ...


14

Disclosure: I work for appMobi. There are many similarities between the two, in fact some of appMobi's functions are built on PhoneGap. Fundamentally, they both encapsulate HTML5/CSS3/JS into a webview that is exposed to the user from a native "Container". They both offer an API that lets you access the device's OS in a way that is impossible for a web app ...


12

There is no industry standard as such. You could look into sample Apple Source Projects to see how they do it.. You could however, try organizing your files into Groups & associate each group to a folder.. Organize all Controllers in One Group with Subgroup for each usecase. Put all views in One Group and subgroup for each usecase. Organize All Models ...


12

Will this work and I'd so how risky is it to future problems? Yes it will work, and how risky it is depends on how good your implementation is. This is perfectly acceptable if done correctly. I have successfully integrated PHP and C, when PHP was simply too slow to do certain niche tasks in real time (IIRC, PHP is 7 times slower than its C counterpart). ...


11

Nobody but Google knows why they made that decision, but here's my best guess: Android is an open platform, so there are a lot of different hardware configurations out there. Being able to emulate different hardware configurations is a big boon for developers, in that it greatly reduces the need to have actual devices to test on. This keeps the costs down ...


11

Let me show you my favorite unit test principles: A test is not a unit test if: It talks to the database It communicates across the network It touches the file system It can't run at the same time as any of your other unit tests You have to do special things to your environment (such as editing config files) to run it. A Set of ...


10

Users tend to stick with 1 or 2 passwords. If the app was hacked by another app, then having the user's password from your service might grant access to other more sensitive resources besides your food service. A better method may be to store some sort of long term authentication token on the phone than the password itself. That token could be tied to the ...


10

In this situation, code reviews would be a great way to spread Objective-C/iOS knowledge throughout the team, so that someone else can fix bugs when the iOS developer goes on a honeymoon/quits in a huff/gets hit by a bus/is moved to a higher priority project. Finding bugs is only half the value of code reviews. Spreading knowledge (about both the technology ...


10

Essentially you would need to proxy that web service with one of your own that does rate limiting. The devices wouldn't know anything about each other, and you can cache/re-implement the service if you need to scale further.


9

It is the naming convention chosen to be used in Core Data SQLite. There are several reasons why it was chosen. One of the main reasons is Z is one of the least used letters of the alphabet so they surely felt by pre-fixing table names and entity names with Z they open more options for developers to name their own tables with fewer chances of stomping on ...


9

When choosing a technology for multi-platform development there are some main issues to consider. The first issue is the quality of the application. PhoneGap, for example, is probably the most popular option for writing an application that works both for Android and iOS. But, of course, it has it's disadvantages (native languages wouldn't be used otherwise ...


9

Focusing solely on A7 being ARMv8 there is one obvious gain. ARM is rebooting their instruction set and architecture. Being backwards compability with ARMv7, next version also claims New instruction set (A64) Revised exception handling for exceptions in AArch64 state Fewer banked registers and modes So ARMv8 challenges ARMv7 on architectural differences, ...


9

The View is the place which has intimate knowledge of your graphical runtime environment, of how color is expressed in it, and even of the fact that you are actually running within a graphical runtime environment and not as part of some unit test. (Assuming that you unit-test your Model, and your View Model, but not your View.) So, I would think that the ...


9

As the co-founder of Codename One which does pretty much that I can answer that pretty easily. You can cross compile (which is what we do) but you can't have a single binary that will work everywhere because mobile OS vendors don't allow it. Apple doesn't allow JIT's and limits interpreters. All mobile devices include app isolation which prevents a global ...


9

Oh it's possible. It just doesn't look like what you want it to look like. What you're complaining about is the use of output ports1,2,3 to communicate results rather then returning results. Does this make testing more complicated? Yes. Then why do it? Because it gives you another layer of polymorphism. When you return, you're returning to the caller. You ...


8

Yes somebody could potentially see this token in the packet, which is why it is also a good idea to use SSL encryption of all network traffic before and after authentication and distribution of a token. Someone on an unencrypted wireless network, like at a Starbucks use this method all the time to pick up packets to services like Facebook that do not ...


8

I think jailbreaking is a good option for your use-case. In addition to resolving the licensing issue (assuming jailbreaking remains legal), it would also enable you to block OTA updates. I think blocking them is a good precaution for your use case, as OS or library updates may cause your software to break in the future even if you don't change it.


8

The reason is security as mentioned in this Stack Overflow question: The reason is security: since a dynamic library can be loaded and unloaded at runtime you could download additional executable code and load it (think plug-in). This could get compromised by a hacker and then having malicious code executing on your phone is a very bad thing. It ...


7

From experience, and a take off from the best voted answer: Your fingers instead of the mouse was the largest difference when we developed Decimation X2 for the Windows Phone 7. It was coded on an emulator, as we did not have a WP7 and it was before the WP7 was released. We could have potentially received a free WP7 before release, in case that last ...


Only top voted, non community-wiki answers of a minimum length are eligible