rss2email.ru | На что подписаться? | Управление подпиской |
TheAppleBlog TheAppleBlog, published by and for the day-to-day Apple user, is a prominent source for news, reviews, walkthroughs, and real life application of all Apple products. http://theappleblog.com рекомендовать друзьям >> |
- App Review: Hysteria Project — iPhone Owner Stalked By Maniac
App Quick Stats
Chased through a trap-laden forest by an axe-wielding murderer, Hysteria Project is a step in a much darker direction for the iPhone.
Reviewing Asteroids-esque shooter The Void last week, I mentioned that some iPhone games are ditching the cute and getting darker. With their first release, the BulkyPix team have taken the anti-cute movement further: chopping up any semblance of cuteness with a rusty axe, putting the bits in to garbage bags and burying the bags in a creepy forest.
Hysteria project is a choose-your-own-adventure for the iPhone. Blending atmospheric film sequences with quick-fire decision-making to create an intense horror experience.
A Beautiful Place Out In the Country
The game opens with you waking, bleary-eyed, in what seems to be deserted cabin. Viewed from a first-person perspective, your eyes still adjusting themselves to the dingy gloom. After discovering your hands and feet are bound with tape — trademark crazy serial killer move — the first decision is to how you’ll go about freeing yourself.
After freeing yourself of the killer’s makeshift bindings, bursting out of the cabin, you’re on foot, limping through a foggy forest. Occasional flashbacks and visions, like twisted treats, fill in the back story. A hooded axe-man took you here and is now on the hunt as you make a desperate bid to flee the forest.
With the action kicking in immediately — a constant blurred chase-scene, stalked by a madman — the game’s unrelenting pace holds up throughout. From the hand-held first-person camera, the blurry shadow monster and the creepy killer, it’s clear that the creators have cherry-picked from a selection of horror classics. As such, the game has a distinctly Blair-Witch-meets-Texas-Chainsaw vibe (with a sprinkling of Lost for good measure).
Getting Ahead
The gameplay itself takes its cue from choose-your-own-adventure books, updating the old-school concept with a modern(ish) twist using live action sequences. The game ends up playing out a little like the old FMV games like Sega’s Night Trap and Cinematronics classic Dragons Lair.
Every minute or so you’re given a choice, such as freeing your legs or finding a sharp implement to help you. Most of the time however, these are not branching choices — one of the options will result in the game advancing while the other will lead to death at the hands of the axe man.
There are also infrequent touch-screen interactions, such as tapping different highlighted areas to push branches away as you search for a hiding place in the forest. It’s fun at first, but feels incomplete — there’s a sense of disconnect between the action and the interaction during these quick-draw sequences.
Sticking the Knife In
This sense of disconnect from the world of Hysteria Project doesn’t end there, however. The low-level of actual interactivity is due largely to the constraining nature of video. Although there’s a poor illusion of choice, you’re pretty much on a one-track path to the end of the game.
Furthermore, because most choices end in death or success, the game ends up playing out like a freaky trial-and-error process; replaying chases and choice sequences as all the intensity drains out of them.
When a choice does arise, the game drops out of the first-person video view to provide a video-game style description scene. Paired with the waiting time as the choice (or video) loads, this text-based screen feels completely at odds with the intensity and immediacy of the video sequences.
Summing Up
Based on the story-arc in Hysteria Project, I’m under the impression that this is the first episode in a series. And perhaps it’s best to look at Hysteria Project as more like an interactive TV series than a straight-up survival horror game.
There’s not enough interaction to really classify this as a proper game, furthermore, there’s not enough real choice either. It’s more an intense, shocking, and exciting interactive experience than a playable adventure.
While Hysteria Project isn’t as groundbreaking or genre-defying as its creators would have us believe, it’s certainly an accomplishment to have realized such a twisted vision. Fans of horror movies and players should check out Hysteria Project, though it’s not perfect, it’s certainly a unique iPhone experience.
Переслать - iPhone Wrestling Smackdown: WWE vs. TNA
Finally, the Rock has come back to video games, and for the first time ever, on the iPhone. Well, he did for a little while, anyway.
WWE Legends Of Wrestlemania was released on March 24 and being an avid wrestling fan, I immediately bought a copy. Meanwhile, on the March 30, TNA Wrestling was released, bringing the wrestling promotion wars to the iPhone and taking me to potential heaven. So here I am, ready to pit the two games against each other in a wrestling showdown of epic proportions, one not seen since the glorious WWF vs. WCW days of the late 90s.
WWE Legends Of Wrestlemania
The battle was on, however as soon as it had begun, WWE pulled Legends Of Wrestlemania from the App Store due to an insane number of bugs how unplayable the game was. Trying to make a traditional, real-time 3D wrestling game on a small touch-screen device is a big challenge. The gesture-based system they went with had potential to be slightly playable, however for this to work it required instant recognition of the gesture you’ve made. Unfortunately, Legends of Wrestlemania didn’t do this. It would ignore some gestures, or recognize them two seconds after you’ve made them. This made the game play incredibly frustrating and more trouble than it was worth. On top of this, the game was riddled with bugs, as gloriously highlighted in the screenshot below.
Yes, Jimmy Snuka is standing on the second invisible set of turnbuckles that are above the normal turnbuckles. Perhaps I shouldn’t be so harsh on this game since, in all fairness, they have pulled the game and presumably are working hard to address these issues. However I think it’s important to stress that even without the horrible bugs and gesture playability issues, the game is still incredibly bland.
Here’s a screenshot comparing The Rock with Andre The Giant:
Not only do they look nothing like the people they’re meant to portray, they have identical stature and build. If the game play was solid, this would be OK, but for such a shallow game, you’d expect the ‘look’ of it to be right. Additionally, while you can play with different game rules, they do little to change the game play (Hell and Cell is identical to falls count anywhere, with just a cage drawn around the ring, no way to interact with it).
The ’story’ mode just moves you through various matches with very little story. You start off as the WWE Champion and have to defend it leading up to and including Wrestlemania. You don’t interact with other players in anyway apart from the matches. To top it off, Hulk Hogan is nowhere to be found. How can a game about legends of Wrestlemania not let you play as the Hulkster? Even if they fixed the bugs and made the gesture control system responsive, this is a poor design for a wrestling game and feels like it was thrown together just so they can say there’s an iPhone version.
TNA Wrestling
With an old-school video game feel, TNA Wrestling is the breath of fresh air for modern wrestling games. The developers apparently recognized the difficulties they faced implementing a wrestling game on the iPhone and decided to throw out the modern rule book by shunning both 3D graphics and real-time game play. TNA looks and feels like a game from the early-to-mid 90s and focuses on game play and story over flashy gimmicks.
This is a turn-based game, in which you perform basic moves like kicks, punches, lock ups and Irish whips one at a time and can perform a big move by hitting the basic ones in the right combination. The combo moves available to you can be viewed in the bottom area and you can scroll with a finger gesture left or right to see what moves you need to hit for the combo.
There are also a limited number of reversals, counters and avoid moves that can be used strategically during the opponent’s turns. This forces you to pick the right time to use them to minimize the damage taken and turn the tide of the match. It’s not all about strategy, however, as once you hit a combo move or a reversal you have to perform a series of guided real-time gestures correctly to successfully hit the move.
These gestures are not in any way hard to hit, but you have a very limited time to mimic all the gestures and often in haste you can miss one, throwing a big spanner into your strategy game. These gesture tasks add a great real-time feel to the game play while still being playable — it’s just great fun. In a similar way, making a pinfall (or conversely, escaping from a pinfall) requires you to push the button at the right time to hit the target with a moving bar, with the size of the target dependent on the current health level of you and your opponent.
With single, tag team, gauntlet, iron man, 2 out of 3, lumberjack and handicap matches available, the core wrestling game play in TNA Wrestling is just awesome fun. Which brings me to the story mode. Unlike the story mode of Legends of Wrestlemania, in TNA Wrestling you start as a nobody trying to make his name in the independent wrestling scene. You finally get noticed and signed to TNA Wrestling, where you work your way up from the bottom. Half of the time spent in story mode is in choose-your-own-adventure style conversations. What answers you choose change the story path at every step of the way — this gives great re-playability to see what would happen if you choose a different path.
Just as important however, the choices you make give you heel or face points, which impact if the audience like you or not and what moves become available to you as you level your character up. The story lines in this game are all classic wrestling story lines, with wrestlers turning against you, love angles and more. Its all hilariously written and is an absolute pleasure to see unfold. This is the best story mode of any wrestling game I’ve played.
There are some negatives, of course. The animation is a little choppy, the music is annoying (but can be turned off), and here, too, the bodies of all the wrestlers are the same size and stature. These don’t matter so much, however, as the immersion from the story lines work so well you don’t mind.
Your winner, and New iPhone Wrestling Champion is…
Since TNA Wrestling is the last man standing in the App Store, it wins by disqualification of WWE Legends of Wrestlemania. However I think that its important to reiterate that even if they fixed the major bugs, Legends of Wrestlemania just does the minimum necessary to be called a wrestling game. The graphics are poor, the story mode is incredibly weak, and the game play design is broken. TNA Wrestling, on the other hand, is absolutely entertaining in its story delivery, provides an innovative turn by turn wrestling game play, while sporting old-school graphics that work well with the game. TNA Wrestling is without a doubt the iPhone Wrestling Champion, and could even become my favorite wrestling game of all time.
Переслать - IDC Numbers: Apple's Doing Just Fine, Thank You
Here’s a piece on IDC’s PC Tracker numbers for the first quarter of the year. They’re quite revealing when you look at them soberly.
The first thing you have to do, as I’ve argued before, is pull Apple out of the “PC” mix, so Apple (Mac) can be compared against all the others (PC). Comparing Apple’s figures to an overall figure that includes Apple’s totals makes no sense.
In the U.S., we can pull Apple’s figures from the PC total and come up with 13,835 for 1Q ‘09, and 14,297 for 1Q ‘08, for PCs. Some quick math shows that to be an overall Y/Y drop of 3.23 percent.
Apple’s figures, as the number 4 vendor, show a drop of 1.22 percent.
Right off the bat you can see PC sales dropped 2 percent more than Macs. It would be hard (impossible, really), based on these numbers, to say that Apple was doing anything but better than the PC industry. And the real story goes even deeper than that.
Consider this:
- Lots of noise is made over HP’s and Acer’s gains, but clearly these have come at the expense of Dell and “Others.” You can’t change the fact that overall the PC industry is down over three points.
- Millions and millions of netbooks have been sold, without which the PC figure would be worse. Why does this matter? Ultimately unit sales mean nothing, what matters is profits, and netbooks are even more razor-thin than cheap laptops.
- Speaking of cheap laptops, those are practically being given away. The deals at HP and others are so “good” right now that there’s even less money in it for the vendor.
- Apple, meanwhile, dropped by a much smaller amount than the PC industry.
- A good portion of the quarter Apple didn’t even have their latest models available, being launched in March.
- Apple did not have to rely on a “netbook” to drive its sales; profit margins are still good.
- Apple also did not have to rely on giveaways or free upgrades.
I realize the above figures are U.S.-only, but it’s where IDC has provided detailed Apple figures. Besides, it’s silly to think that globally this overall trend for Apple will be different. Especially since — as PC supporters frequently point out — Apple is a smaller player on the global front.
And, no, I’m not saying a year-over-year drop is a good thing. Of course it isn’t. I’m saying it’s all relative, and one must consider the conditions under which the drop occurred.
The bottom line is this: For all the ranting and raving by analysts about lowering prices in this economy, which PC vendors have done, Apple has continued to produce quality Macs at good profit margins and still dropped less than the PC industry.
Переслать - Macs Open to Security Flaw Thanks to Windows in VMware Fusion
The recent Conficker virus scare had me warning relatives to protect their PCs, while also simultaneously gloating about how lucky I am to not be affected, since I’m a Mac user. You could say it bordered on the obnoxious, and you’d be right.
But it looks like I may have to eat some humble pie now that a bug has been found in VMware Fusion that could potentially allow malicious code to be run on your Mac using a virtualized Windows machine as a conduit. Obviously, Windows is still the weak link here, but it doesn’t make your Apple machine any less vulnerable.
Luckily, the flaw was discovered by Immunity Inc. exploit researcher Kostya Kortchinsky, and not by some malicious hacker eager to steal your credit card information. The vulnerability allows the virtual machine display function to read and write code in the host operating system, including OS X. Kortchinsky demoed the flaw using a Vista machine running a guest OS of Windows XP, but said the flaw is just as easy to exploit in OS X running Fusion, though they hadn’t yet actually run live tests of such a scenario.
Not one to be caught slouching, VMware has already responded with an update to Fusion, version 2.0.4, to fix the bug and block the exploit. It’s a free update for all Fusion 2 owners.
Even if Windows is actually the conduit for the malicious code in this case, this is a good reminder that Macs are not invulnerable to attack, despite what we may sometimes think. There’s a variety of security software out there to consider, but as always, smart and safe usage is your best bet for avoiding most ills.
Переслать - Nintendo and Sony "Freaking Out" Over Apple iPhone
If you go and do something like found Electronic Arts, which then goes on to be one of the dominant forces in video games worldwide, people tend to take notice of things you say. Yesterday in an interview with Venture Beat’s Dean Takahashi, Trip Hawkins, EA founder and current Digital Chocolate executive, said that Nintendo and Sony are probably “freaking out” over the rampant success of the iPhone as a gaming platform.
The threat of the iPhone to Sony and Nintendo, and their PSP and DS(i) respectively, is not the number or quality of games available for the platform, but rather the value proposition it represents from a business standpoint. According to Hawkins:
The iPhone is by far our most effective platform. We make as much money with these games on one device as we do putting a game on 100 different cell phone platforms. Between the iPod touch and the iPhone, I think the platform is freaking out Sony and Nintendo.
So it comes down to a question of investment vs. return, as does any sound business decision, gaming industry or not. If Apple can tip the scales sufficiently in their favor, the repercussions for the gaming industry could be immense. It could mean smaller dev teams, a quicker turnaround and or/development cycle, and less focus on branding and franchises (casual games succeed based on mechanics, not mascots), all of which could eventually affect not only mobile gaming, but the home console industry as well.I’m not sure I like where this is going. Yes, I like playing Bejeweled 2 on my iPhone, and I’ve been known to enjoy a number of other games as well, but I just started playing GTA: Chinatown Wars on my DSi, and it reminded just how much catching up the iPhone has to do when it comes to gaming. The iPhone definitely offers a better gaming experience than any phone I’ve ever owned, but for real gaming, nothing beats physical control keys and buttons. I can’t even express the difference in words, but if you’re at all a gamer, you probably know what I’m talking about.
I’m hoping developers and studios don’t lose sight of this with all those dollar signs in their eyes. By all means, continue to develop for the iPhone, and do the most with what the platform offers, but don’t turn to it exclusively. Casual gaming is great, but for it to become the primary focus of the industry would be like all musicians turning their efforts to country because it sells best. I pray neither of these things ever happens.
Переслать - Gas Cubby Gets 2.0 Update
About two months following the pricing experiment by App Cubby’s David Barnard, Gas Cubby gets a 2.0 upgrade.
Gas Cubby provides a way to track gas mileage for your automobile. But more than that, all maintenance and other costs sunk into your vehicle are dutifully tracked as well. Tilt your iPhone horizontally and view graphs that can tell you how well your car is performing (or not), and how much of a drain on your wallet it may be. And my favorite feature: setup maintenance reminders so you don’t miss that oil change when the sticker falls off the inside of your windshield.
Here’s a listing of what Version 2 adds to Gas Cubby:
- Online Sync - backup your data (useful if migrating from Lite and Full versions)
- Custom Service Reminders - remember to change your pine tree air freshener
- Data entry shortcuts - move through data entry in succession rather than back and forth
- Gas Stats Chart - quick look at all stats numbers
- Swipe navigation of Detail view - no need to back out to list of entries first
- Date filter buttons for charts - narrow your view based on time frame
- Line for averages in charts - your average results
- Custom Octane ratings - in case fuel is different in your neck of the woods
- Setting for calculator style number pad - a change of scenery if you like
- Badge icon for past due service reminders - visual reminder from the home screen
As I’ve been among the beta testers for Gas Cubby 2.0, I can say the updated features are nice. This already polished app has received a solid handful of features, making it even nicer to use. Would I call it a pleasure to track my vehicle’s statistics? Actually, I would.
As in the past, I definitely recommend Gas Cubby if you’re looking for a good way to keep your vehicle’s records up to date. Grab your own copy from the App Store for $9.99, or try out the Lite version for free.
Переслать - iPhone Dev Sessions: Create a Navigation-Based Application
In this tutorial, you will learn how to do the following:
- Create and run a Navigation-Based Application from XCode
- Create and add a user interface, designed in Interface Builder, as a sub-view to a navigation based application
- Navigate to sub-views from a UITableView
- Allow sub-views to access application data
Creating and Running a Navigation-Based Application in XCode
Let’s start off by opening up XCode and creating a Navigation-Based Application.
Click Choose… and give your application the name BasicNavigation. Once completed, your project window should look like this.
At this point, if you click “Build and Go” and have your project selected to run on the iPhone simulator, you should see the application launch and display a bare UITableView, with undefined row elements. No worries, this is going to change very soon. Your app at this point should look like the following below.
Adding a Sub-view (Designed in Interface Builder) to a UITableView
We are now going to add a sub-view to our application. This sub-view will consist of three key elements.
- A Header File (*.h file extension) — Used for defining methods and variables to be used by an accompanied implementation file.
- An Implementation File (*.m file extension) — Used for implementing methods and accessing variables defined in an accompanied header file. This is where we will place code for view specific logic and functionality.
- An Interface File (*.xib extension) — Used for defining the visual look of the view, using Interface Builder.
In XCode, within the project area on the left, right-click on the Classes folder and select Add, then New File…. You will be presented with the following dialogue.
Make sure you’ve selected Cocoa Touch Classes on the left and select the file template for UIViewController subclass as illustrated above, and click Next. You will be presented with a dialogue in which you will assign a name for this asset. Name this file SubViewOneController.m and make sure the checkbox for Also create ‘SubViewOneController.h’ is checked as well. Click Finish when this is done. The dialogue should look like the following, before clicking on Finish.
At this point, you will see two additional files in the Classes folder that we’ve just added. So far we’ve added a header file (SubViewOneController.h) and an implementation file (SubViewOneController.m), which takes care of two out of three key elements. We’ll now add the last element here before moving on towards implementation.
In XCode, right-click the Resources folder and select Add, then New File…. On the left, select User Interfaces and select View XIB and click next. In the next dialogue, you will give this user interface a name. Type SubViewOne.xib under File Nam” and click Finish. These steps are illustrated below.
The contents of your project window should now look similar to the illustration below.
Open the file SubViewOneController.h and add the following code:
#import <UIKit/UIKit.h> @interface SubViewOneController : UIViewController { IBOutlet UILabel *label; IBOutlet UIButton *button; } @property (retain,nonatomic) IBOutlet UILabel *label; @property (retain,nonatomic) IBOutlet UIButton *button; - (IBAction) OnButtonClick:(id) sender; @end
Open the file “SubViewOneController.m” and add the following code:
#import "SubViewOneController.h" @implementation SubViewOneController @synthesize label, button; - (id) init { self = [super init]; if (self != nil) { // set the title of this view self.title = NSLocalizedString(@"Subview One", @""); } return self; } - (IBAction) OnButtonClick:(id) sender { } - (void)didReceiveMemoryWarning { [super didReceiveMemoryWarning]; // Releases the view if it doesn't have a superview // Release anything that's not essential, such as cached data } - (void)dealloc { [super dealloc]; } @end
What we’ve done thus far is write a bit of view controller code. In our code, we’ve declared a variable for a
UILabel
and aUIButton
. We’ve also created a stubbed handler method for responding on the button click action. What we haven’t done yet is create a user interface to go with our view controller code. Let’s go ahead do that now.In the project window, let’s expand the Resources node, and double click on the file SubViewOne.xib. You will then see Interface Builder open this file and be presented with a blank View file. In the menu bar, click on Tools, then Library. When the Library window opens, click on the Inputs & Values node. The Library window will look this.
Drag a UILabel and a UIButton such that your view mimics the following interface.
At this point, if you have not saved and built your project, please do so by going back into XCode and clicking the Build button. If all is well, everything will build successfully. We’re not done just yet, so let’s head back to Interface Builder.
Highlight File’s Owner and then from the menu bar, click on Tools, then Identity Inspector. In the Class text input, type or scroll down to the menu option that says SubViewOneController. Your view properties should now look similar to the following.
In the next steps we are going to wire up the user interface elements of the view we’ve created to the view controller we created earlier. First make sure File’s Owner is selected. In the menu bar, click on Tools, then Connections Inspector.
Under Outlets and Received Actions in the Connections Inspector make the following associations:
- Drag the “button” outlet to the button on the visual interface
- Drag the “label” outlet to the label on the visual interface
- Drag the “view” outlet to anywhere on the visual interface
- Drag the “onButtonClick” action to the button on the visual interface. Select “Touch Up Inside”
At this point we’ve created our first sub-view, however we’re not going to be able to get to it from application just yet. That’s the next step.
Before moving on, go back into XCode and click on Build before moving onto the next part. Your build should compile and the results should report back successfully at this point.
Navigating to a Sub-View from a UITableView
The code below will do the following:
- Sets up an array of views and supplies that array to our UITable as a data source
- Adds multiple sub views to our application using the sub view we’ve designed and written thus far
- Allows us to navigate to different sub views upon view selection from our UITableView
Open the file “RootViewController.h” and add the following code:
#import <UIKit/UIKit.h> @interface RootViewController : UITableViewController { IBOutlet NSMutableArray *views; } @property (nonatomic, retain) IBOutlet NSMutableArray *views; @end
Open the file “RootViewController.m” and add the following code:
#import "RootViewController.h" #import "SubViewOneController.h" @implementation RootViewController @synthesize views; - (void)awakeFromNib { // we'll keep track of our views in this array views = [ [NSMutableArray alloc] init]; // allocate a set of views and add to our view array as a dictionary item SubViewOneController *subViewOneController = [[SubViewOneController alloc] init]; subViewOneController.title = @"Subview One"; [views addObject:[NSDictionary dictionaryWithObjectsAndKeys: @"Subview One", @"title", subViewOneController, @"controller", nil]]; [subViewOneController release]; subViewOneController = [[SubViewOneController alloc] init]; subViewOneController.title = @"Subview Two"; [views addObject:[NSDictionary dictionaryWithObjectsAndKeys: @"Subview Two", @"title", subViewOneController, @"controller", nil]]; [subViewOneController release]; subViewOneController = [[SubViewOneController alloc] init]; subViewOneController.title = @"Subview Three"; [views addObject:[NSDictionary dictionaryWithObjectsAndKeys: @"Subview Three", @"title", subViewOneController, @"controller", nil]]; [subViewOneController release]; // create a custom navigation bar button and set it to always say "Back" UIBarButtonItem *temporaryBarButtonItem = [[UIBarButtonItem alloc] init]; temporaryBarButtonItem.title = @"Back"; self.navigationItem.backBarButtonItem = temporaryBarButtonItem; [temporaryBarButtonItem release]; //set the title of the main view self.title = @"Basic Navigation"; } - (void)didReceiveMemoryWarning { [super didReceiveMemoryWarning]; // Releases the view if it doesn't have a superview // Release anything that's not essential, such as cached data } #pragma mark Table view methods - (NSInteger)numberOfSectionsInTableView:(UITableView *)tableView { return 1; } // Customize the number of rows in the table view. - (NSInteger)tableView:(UITableView *)tableView numberOfRowsInSection:(NSInteger)section { return [views count]; } // Customize the appearance of table view cells. - (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath { static NSString *CellIdentifier = @"Cell"; UITableViewCell *cell = [tableView dequeueReusableCellWithIdentifier:CellIdentifier]; if (cell == nil) { cell = [[[UITableViewCell alloc] initWithFrame:CGRectZero reuseIdentifier:CellIdentifier] autorelease]; } // Set up the cell... cell.text = [[views objectAtIndex:indexPath.row] objectForKey:@"title"]; return cell; } - (void)tableView:(UITableView *)tableView didSelectRowAtIndexPath:(NSIndexPath *)indexPath { // Navigation logic may go here. Create and push another view controller. UIViewController *targetViewController = [[views objectAtIndex: indexPath.row] objectForKey:@"controller"]; [[self navigationController] pushViewController:targetViewController animated:YES]; } - (void)dealloc { [views dealloc]; [super dealloc]; } @end
Click the “=Build and Go button in XCode. Our application thus far should now allow us to select a sub view and navigate to it. The application should look similar to the following:
Accessing Global Application Data
In an iPhone application, the Application Delegate can commonly be used to store global variables accessible by all views. You may run into a situation where a view may require data that has been modified by another view or may need to be notified of updates to this data. This piece of the tutorial will cover that very scenario. In this, we’ll be covering some key points in our code:
- Subscribing to central events
- Broadcasting events globally
- Reading/writing global application data
To begin, let’s open the file BasicNavigationAppDelegate.h and add the following code.
#import <UIKit/UIKit.h> @interface BasicNavigationAppDelegate : NSObject <UIApplicationDelegate> { //Application Model Data NSString *modelData; UIWindow *window; UINavigationController *navigationController; } @property (nonatomic, retain) IBOutlet UIWindow *window; @property (nonatomic, retain) IBOutlet UINavigationController *navigationController; - (void) setModelData:(NSString *)modelData; - (NSString *) getModelData; @end
Now open BasicNavigationAppDelegate.m and add the following code.
#import "BasicNavigationAppDelegate.h" #import "RootViewController.h" @implementation BasicNavigationAppDelegate @synthesize window; @synthesize navigationController; - (void)applicationDidFinishLaunching:(UIApplication *)application { // Configure and show the window [window addSubview:[navigationController view]]; [window makeKeyAndVisible]; } - (void)applicationWillTerminate:(UIApplication *)application { // Save data if appropriate } // accessor methods for "data" property - (void) setModelData:(NSString *) newData { modelData = newData; [[NSNotificationCenter defaultCenter] postNotificationName:@"dataChangeEvent" object:self]; } - (NSString *) getModelData { if ( modelData == nil ) { modelData = @"Hello World"; } return modelData; } - (void)dealloc { [navigationController release]; [window release]; [super dealloc]; } @end
We’ve added a model variable and accessor methods to read and write to this variable. Notice on the
setModelData
method, how we have the following line[[NSNotificationCenter defaultCenter] postNotificationName:@”dataChangeEvent” object:self]
. When this setter method is called, we will be broadcasting an event,dataChangeEvent
, to observers of this event notification. For this application, our sub views will subscribe to this event notification.Go back and open up SubViewController.h and add the following line:
- (void) getModelData;
Now open SubViewOneController.m, and update the code to look like the following:
#import "SubViewOneController.h" #import "BasicNavigationAppDelegate.h" @implementation SubViewOneController @synthesize label, button; - (id) init { self = [super init]; if (self != nil) { // subscribe to changes on global data and course of action to take [[NSNotificationCenter defaultCenter] addObserver:self selector:@selector(onDataChangeEvent:) name:@"dataChangeEvent" object:nil]; } return self; } - (IBAction) OnButtonClick:(id) sender { // this view will set our model data BasicNavigationAppDelegate *appDelegate = (BasicNavigationAppDelegate *)[[UIApplication sharedApplication] delegate]; NSString *displayString = [NSString stringWithFormat: @"Set By %@", [self title]]; [appDelegate setModelData:displayString]; } - (void)onDataChangeEvent:(id) sender { [self getModelData]; } -(void)viewWillAppear:(BOOL)animated { [self getModelData]; } // set our label to reflect the latest copy of the data that we're observing - (void) getModelData { BasicNavigationAppDelegate *appDelegate = (BasicNavigationAppDelegate *)[[UIApplication sharedApplication] delegate]; [label setText:[appDelegate getModelData] ]; } - (void)didReceiveMemoryWarning { [super didReceiveMemoryWarning]; // Releases the view if it doesn't have a superview // Release anything that's not essential, such as cached data } - (void)dealloc { [super dealloc]; } @end
Let’s note the relevant things that are going on here:
- The view subscribes to the
dataChangeEvent
on theinit
method. When thedataChangeEvent
is fired, the methodonDataChangeEvent
is triggered and executed. - On Button click, we will be setting the the model data located in our application delegate. Remember, that in our implementation, whenever that variable is set, the
OnDataChangeEvent
is fired and all observers of that event will respond to it
Here’s how we know that our sub views are operating off the same global data.
- Click on Sub View One, then click the button in that view. You’ll notice the label will change to “Set By Subview One”
- Click “back”, then click on Sub View Two. Notice the label says “Set By Subview One”
- Click the button, the label should change in Sub View Two to “Set By Subview Two”
- Click “back, then click on Sub View Three. Notice the label says “Set By Subview Two”
Do you notice what’s happening here? Our data is persisting across views and this data can be read and set by any of our sub views. What we’ve demonstrated here are some very basic practices in model-view-control design and implementation. I hope this lesson carries well for you. Happy coding.
Переслать - Fix MacBook Air Streaming Video and Overheating Problems
I’ve been having a lot of trouble streaming video on my MacBook Air recently. No matter which site I’m on, YouTube, Hulu, or Netflix, within a few minutes the video becomes choppy and unwatchable. Fed up with my computer’s inability to complete a task it should be able to handle no problem, I brought her into the Apple store on 14th street in NYC to get repaired…which did not happen.
After I described my problem, and offered up screenshots of the activity monitor showing one of my cores shut down with just Firefox or Safari open, the “genius” looked a my computer for a total of about five minutes before informing me that MacBook Airs were built to be ultraportable and therefore cannot do everything a regular MacBook can, like watch YouTube videos. I was steaming…
After leaving the Apple store, I went home and did some research, where I uncovered the magic pill for the MacBook Air overheating problem, Coolbook. Coolbook is a $10 program that lets you change the frequency and voltage of your processor to reduce heat and fan noise, and increase battery life. Before I found Coolbook I was honestly going to sell my MacBook Air and get a new laptop, but now that I have Coolbook installed and tweaked, my computer is running perfectly.
A Few Notes About Coolbook
- There is a free version, but it doesn’t let you do anything. Don’t waste your time with it; purchase the full version immediately.
- The directions are a little confusing, so I’ve outlined some pointers below.
- There is a whole forum thread about Coolbook here.
- Although I used it on a MacBook Air to fix my video issues, it should improve the performance of any Mac laptop.
- I had an email conversation with the developer, so a lot of the information listed is “straight from the horse’s mouth.” Thanks for helping, Magnus!
After you download and purchase Coolbook, go ahead and register it. Once it’s registered you can start to configure it.
Setting a Voltage With Frequency
When you’re configuring frequencies, it’s important to uncheck the “Throttle Active” checkbox.
- Select the frequency from the drop-down box
- Select the voltage from the drop-down box
- Click the set button.
“The lower voltage you can use, the more power you will save. Finding the limits of your CPU requires some experimentation. If you try to step down the voltage one notch at the time, you will eventually reach the limit of your CPU, and you will have a kernel panic (showing the picture of the power button).”
We need to do this process with each frequency for both adapter and battery mode, making sure we save our work each time we find the correct voltage for a frequency.
Throttling Level & Temp Limit
Throttling level controls how easy CoolBook will step up in frequency. A higher value will make the frequency step up quicker, and at a lower CPU load. High is recommended when using temp limit. When the temp limit is reached, CoolBook will step down to a lower frequency in the list. This is done to reduce heat. This feature is not needed for all computer models, but it is recommended on computers that reaches too high temperatures during load.
Throttling Active & Coolbook Active
Finally, it’s time to turn on throttling and Coolbook. Check both boxes and let your system reboot when prompted. When your system is rebooted, it will be running Coolbook in the background. You do not need to launch the application.
Screenshots of My Configuration
Each processor is different, but this is how my system is configured.
Переслать - Sorry Apple Cinema Display, Your New Cousin Is a Cheaper Date
I don’t think I’m alone in visiting the Apple Cinema Display official product page every now and again and saving carts for later filled with LED goodness, even though I never intend to cash out because I can’t afford to. Apple’s displays are sexy, functional, and of tremendous build quality, but that price tag is a little beyond my monitor budget, so I’ll usually end up opting for a Dell that’ll give me the same real estate for far less dough. Plus, I’ll often look for something smaller than 24 inches, since I rarely do graphics-intensive work that requires a larger screen.
Recently, I’ve been looking for a second monitor for my Mac mini since the Mini DisplayPort hook-up is just sitting there empty, and I’m often inclined to play video games and watch TV at the same time, despite the question of whether I can actually enjoy either activity while doing so. New company CinemaView looks to have come along at just the right time. They recently announced a new line of LCD displays designed just for Macs, at a price that won’t break the bank, and with a Mini DisplayPort connector cable out of the box.
That’s not all. It’s actually a combined 1.2-meter Mini DisplayPort/USB/3.5mm mini-stereo composite cable, so you can make use of the three powered USB ports on the rear of the display, and the built-in speakers. And with aluminum construction and Apple styling, you’re basically getting the closest thing to an Apple Cinema Display you can find without actually buying one.
According to the company, the displays were created because they were tired of using “plastic junk” from companies like Dell and Samsung but wanted a lower cost option to Apple. Modesty clearly isn’t the company’s strong suit, as you can tell from this quote from the site’s FAQ:
Q. Are these just copies of Apple’s displays?
A. No. Frankly, we think our design looks better than Apple’s. We think our component and materials selections are superior. And, we think our tilt mechanism (patent pending) and Aluminum base design are sexier than Apple’s.
Without seeing the thing in person, I can’t make any assertions regarding these displays and how they compare to Apple’s on the sexiness scale, but they do look better (and more functional) than the Samsung Touch-of-Color I recently picked up as a gift for my girlfriend, which is a fairly good-looking monitor. Three models are available: a 19-inch for $299, a 21-inch for $399, and a $24-inch for $499. The ship date is currently listed as some time before Sept. 1, but you can reserve one now at their web site, with no obligation to buy.
Переслать - AT&T Looking to Lock in iPhone Exclusivity Through 2011
Does it actually surprise anyone that, according to a recent Wall Street Journal report, AT&T would be looking to extend their exclusivity contract with Apple to be the sole official U.S. iPhone carrier? If it does, I will begin to lose faith in the intelligence of our readers. The journal report claims that the exclusivity deal expires next year in 2010, and that AT&T are working towards extending that date to at least 2011 in order to keep the massive revenue generator in their camp.
AT&T President Randall Stephenson hopefully has a few things up his sleeve for moving AT&T out of the dying landline business and increasingly toward the much more lucrative and future-proof mobile wireless market. Clearly, securing iPhone carrier exclusivity would be high among his goals then, since 4.3M iPhone subscribers joined up in the second half of 2008, nearly half of whom were new to AT&T.
Problem is, from where I’m standing, AT&T probably isn’t in a very good bargaining position at the moment. Sure, they’re building out their network as fast as they can to keep up with the additional strain put on their 3G network by iPhone demand, but what kind of carrot could they possibly wave in front of Apple to really convince them that selling their phone to more people on multiple networks isn’t the better deal?
The answer is money. They could offer Apple a revenue sharing model that is extremely generous, and subsidize upcoming handsets to the point where Apple could potentially offer the iPhone at a lower price point and expand their user-base even more. The key ingredient will be network buildout, though, since Apple is unlikely to stick around if AT&T can’t get its act together enough to even allow for more subscribers, regardless of how either company intends to attract them. That’s good news for current subscribers, because it means they should see significant improvements in service through at least 2011.
Переслать - Ingredients List for Apple's New iPhone Published
Normally DigiTimes is content to just let the information leak out in a slow but steady stream leading up to the WWDC, but this time the Taiwanese news and rumors site has completely given up the goat in one fell swoop, instead of pacing themselves. They’ve published a list of various part makers for the upcoming iPhone revision from Apple, in a convenient, easy-to-digest table form no less. They’ve done everything but build the thing, basically.
As was previously reported, Samsung and Toshiba will be supplying the massive volumes of NAND flash required for the "iPhone 3.0", and OmniVision will provide the 3.2-megapixel CMOS image sensor for the new iPhone camera. Missing from the list of components is that key ingredient, the processor(s?). The components are meant to be assembled into an initial order of 5 million iPhones and shipped by May 2009, which would give Apple ample buffer time to get things ready for WWDC on June 7.
DigiTimes may not have a perfect track record when it comes to Apple rumors, but at this point the amount of evidence piled up on the side of a new iPhone is pretty much insurmountable. In fact, the nature of the list revealed yesterday by DigiTimes seems to suggest that Apple is not unaware that supplier details are being leaked, and probably supports some evidence being spread around in order to build consumer anticipation for the new device. The key omission of information regarding the most hotly anticipated hardware component, the CPU, which some speculate could be dual-core, and the rumored GPU indicates to me that Apple is very much in control of what information is and isn’t made available for public consumption.
Переслать - Apple Reveals Top iPhone Apps of All Time
I’ll bet there are many, many developers out there right now trying to figure out just what the perfect recipe is for App Store mega success. Well, there’s probably no ready-made formula that will guarantee you bucketloads of iPhone user cash, but studying the work of those who’ve already done well might reveal some basic truths about what customers are looking for. Go ahead and do so by checking out Apple’s recently released list of the top apps of all time (iTunes link).
Basic Truth #1: iPhone users like shooting things, or at least pretending to. That’s probably not very accurate, but there are two shooting-related apps among the top 20 paid apps, iShoot and iHunt. Shooting also occurs in Fieldrunners, but not in such a hands-on manner. I think the list of free apps might be more illuminating in some ways, since no doubt the 99 cent price point of many of the paid apps might have had more to do with their success than the content or function of the app itself. At least I sincerely hope that’s why iFart Mobile got a spot.
Among the top 40 (20 paid and 20 free), I have a few personal favorites, and quite a few have me scratching my head. The best, in my opinion, are:
Bejeweled 2 — Honestly, I’m a little surprised I’m including this one too, but recent events have made me realize just how perfect the marriage of the iPhone’s touch interface and this inane, time-killing game truly is. 427,962, level 24 on Classic mode, that’s how perfect.
Shazam — Not only is it actually really handy for when you’re listening to the radio or watching a movie or TV show and can’t quite place a great song, but this is also the ultimate ambassador app. Not everyone is familiar with the iPhone’s vast app library, but almost everyone knows about “the one that guesses what song’s playing,” and almost everyone wants to see it in action.
Pocket God — It was either this or Koi Pond, but Pocket God to me represents what Koi Pond paved the way for, and also what it should aspire to become. The regular updates, or “installments,” make sure this is one app that actually retains a space on my springboard even when other, more useful apps come and go.
Remote — The father of all apps, Apple’s own Remote for use with iTunes on your laptop or desktop computer. I use this constantly, since I have my iTunes on my Mac mini and a multi-room speaker system set up using Airport Expresses. Would like it to work with Quicktime, too, but it’s still more than wonderful for a free app.
Movies — I use this all the time to buy movie tickets en route to the theater. I love it, and love not having to print anything out. Built-in trailers and Rotten Tomatoes round it out very nicely.
By and large, it looks like the goodies are generally rising to the top, though there are the few exceptions I’ve already mentioned. I think that the new capabilities open to developers in iPhone 3.0 will shake up the landscape quite a bit, so look for a much different list the same time next year.
Переслать
rss2email.ru | отписаться: http://www.rss2email.ru/unsubscribe.asp?c=6893&u=24004&r=311667163 управлять всей подпиской: http://www.rss2email.ru/manage.asp |