PHP IDE dedicated to the development there are many, ranging from free to paid ones. For a long time I have used tools such as Eclipse or Aptana , coming to serve a specialized editor with HTML / Javascript, and - even - CSS. For a year now, however, I think I found definitivamento a complete environment that, at least in my case, it solves all my problems: PhpStorm .
Articles Tagged 'Development'
PhpStorm 2.0
Very short trick: making invisible HTML comments
Comment HTML is a practice during the early stages of Web development, however the commented code remains visible on the page, even if it is ignored by the browser. By selecting "View Source" or "View Code" from our browser, we will be able to see it.
Very short snippet: PHP, cut into words, counting the characters
As seen in the Very short snippet: PHP word cut is more pleasant to break a text to "words", as it avoids cutting a word. There is still counting those who prefer to cut the fonts, as it makes the "cuts" more homogeneous and similar, despite the significant risk of cutting a word, mozzandola the net!
How to set XCode to use the iPhone instead of the simulator
Objective-C: an alternative to using CGRectMake
CGRectMake() is a function (actually an inline # define) used a lot especially when objects are created by code or graphical user interface. o UIImageView . CGRectMake() restituisce una struct (struttura di tipo) CGRect : Its use is therefore often associated initialization components of UIKit , but also to simple UIView or UIImageView . CGRectMake() returns a struct (structure type) CGRect :
1 2 3 4 5 | struct {CGRect CGPoint origin; CGSize size; }; typedef struct CGRect CGRect; |
: Which in turn is composed of two different struct CGPoint and CGSize :
1 2 3 4 5 6 7 8 9 10 11 12 13 | struct {CGPoint CGFloat x; CGFloat y; }; typedef struct CGPoint CGPoint; / * Sizes. * / struct {CGSize CGFloat width; CGFloat height; }; typedef struct CGSize CGSize; |
. That, in their turn again, contain types CGFloat , or types float . If we analyze the code of CGRectMake () are:
1 2 3 4 5 6 7 8 | CG_INLINE CGRect CGRectMake (CGFloat x, y CGFloat, CGFloat width, height CGFloat) { CGRect rect; y; rect.origin.x = x; rect.origin.y = y; height; rect.size.width = width; rect.size.height = height; return rect; } |
It follows, therefore, that this part of the code:
1 2 3 4 | [ UIButton buttonWithType : UIButtonTypeRoundedRect ] ; UIButton gbutton * = [UIButton buttonWithType: UIButtonTypeRoundedRect]; 12 , 409 , 100 , 40 ) ; gbutton.frame = CGRectMake (12, 409, 100, 40); @ "Press" forState : UIControlStateNormal ] ; [Gbutton setTitle: @ "Press" forState: UIControlStateNormal]; gbutton ] ; [MainWindow addSubview: gbutton]; |
It could rightly be written as:
1 2 3 4 | [ UIButton buttonWithType : UIButtonTypeRoundedRect ] ; UIButton gbutton * = [UIButton buttonWithType: UIButtonTypeRoundedRect]; CGRect ) { 12 , 409 , 100 , 40 } ; gbutton.frame = (CGRect) {12, 409, 100, 40}; @ "Press" forState : UIControlStateNormal ] ; [Gbutton setTitle: @ "Press" forState: UIControlStateNormal]; gbutton ] ; [MainWindow addSubview: gbutton]; |
Just to speed things up 'the code is running ... ![]()
Xcode shortcut
Xcode is a really good development environment, nice and full of details that make writing efficient code and pleasant. Among these is certainly the convenience of auto-complete when typing, especially when writing applications for Apple iPhone, where the frameworks are many and remember syntax and nomenclature is undertaking a few.
iPhone SecondApp: Guess the number - Part 2
As mentioned FirstApp iPhone: Guess the number - Part 1 we see how to make an application for the Apple iPhone without using Interface Builder! Indeed, we will eliminate physical files created by Interface Builder wizard Xcode. At the end of this post, then, we have an application identical in all respects, to those built in the first part, with the difference that we will achieve all our visual components, including the Main Window, for complete code.
The application already made, if you just want to download, is available on my Google Code repository:
I would like to point out immediately as the ZIP of this example weighs less than the last time! ![]()
We create the project
We start by creating our project SecondApp (to distinguish it from FirstApp), although this time choose Window-based Application:

Now let's delete everything related to Interface Builder. : eliminatelo anche dal file system, quindi selezionate Also Move to Trash . Eliminate the file MainWindow.xib , located in the folder Resources , remove it from the file system also, and then select Also Move to Trash. nella casella Main nib file base name : Select then the file SecondoApp-info.plist and delete the reference to the MainWindow nib file in the Main box based name:

At this point we no longer have any Window, at least through Interface Builder. , e modifichiamo la funzione main() in questo modo: So we open the file main.m , situated in Other Sources , and modify the function main() like so:
1 2 3 4 5 6 7 8 9 10 11 | int argc, char * argv [ ] ) { int main (int argc, char * argv []) { pool = [ [ NSAutoreleasePool alloc ] init ] ; NSAutoreleasePool * pool = [[ NSAutoreleasePool alloc] init]; / / By removing the file. XIB we lost tracking / / The app delegate and then pass it to "hand" UIApplicationMain ( argc, argv, nil , @ "SecondAppAppDelegate" ) ; int retVal = UIApplicationMain (argc, argv, nil, @ "SecondAppAppDelegate"); ; [Pool release]; return retVal; } |
Open SecondAppAppDelegate.me then we create the main Window via code:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 | void ) applicationDidFinishLaunching : ( UIApplication * ) application { - (Void) applicationDidFinishLaunching: (UIApplication *) application { / / Get the screen size (320, 480) UIScreen mainScreen ] applicationFrame ] ; CGRect windowRect = [[UIScreen mainScreen] applicationFrame]; / / Create a window - as we did bye bye to Interface Builder [ [ UIWindow alloc ] initWithFrame : windowRect ] ; UIWindow mainWindow * = [[UIWindow alloc] initWithFrame: windowRect]; / / Set the background of the Window to yellow, to differentiate / / The previous application FirstApp [ UIColor yellowColor ] ] ; [MainWindow setBackgroundColor: [UIColor yellowColor]]; mainWindow ] ; [Self setWindow: mainWindow]; ; [Window makeKeyAndVisible]; ; [MainWindow release]; } |
You can already test the application, if a window appears yellow you did everything right!
, necessario solo se si usa Interface Builder. In the file SecondAppAppDelegate.h we can eliminate IBOutlet , only needed if you use Interface Builder. Also add here that our global variables, the last time we had entered in the Controller. Then modify the file SecondAppAppDelegate.h :
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 | # Import <UIKit/UIKit.h> NSObject <UIApplicationDelegate> { @ Interface SecondAppAppDelegate: NSObject {<UIApplicationDelegate> UIWindow * window; UITextField * number; UIButton * button; int numeroACaso; } nonatomic, retain ) UIWindow * window; @ Property (nonatomic, retain) UIWindow * window; void ) controllaNumero; - (Void) getNumber; @ End |
, in quanto non stiamo usando Interface Builder. Also in this case we have prepared the method definition controllaNumero , as the last time, but we have eliminated the indication IBAction , since we are not using Interface Builder.
We build the interface code
It 's time to create code using all components of our interface. ed inseriamo il seguente codice: We return in the file SecondAppAppDelegate.m , posizioniamoci before [mainWindow release] and insert the following code:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 | / / Create the title bar [ [ UINavigationBar alloc ] initWithFrame : CGRectMake ( 0.0 , 0.0 , 320.0 , 44.0 ) ] ; UINavigationBar myNavigationBar * = [[UINavigationBar alloc] initWithFrame: CGRectMake (0.0, 0.0, 320.0, 44.0)]; myNavigationBar.barStyle = UIBarStyleDefault; [ [ UINavigationItem alloc ] initWithTitle : @ "Indovina un numero" ] ; UINavigationItem navigationItem * = [[UINavigationItem alloc] initWithTitle: @ "Guess a number"]; navigationItem animated : NO ] ; [MyNavigationBar pushNavigationItem: navigationItem animated: NO]; myNavigationBar ] ; [Window addSubview: myNavigationBar]; / / Create the label [ [ UILabel alloc ] initWithFrame : CGRectMake ( 10 , 50 , 300 , 80 ) ] ; UILabel myLabel * = [[UILabel alloc] initWithFrame: CGRectMake (10, 50, 300, 80)]; UIColor clearColor ] ; myLabel.backgroundColor = [UIColor clearColor]; ; myLabel.numberOfLines = 2; "iPhone ha pensato un numero da 1 a 10, prova ad indovinarlo?" ; myLabel.text = @ "iPhone has designed a number from 1 to 10, try to guess?" myLabel ] ; [Window addSubview: myLabel]; / / Create text input UITextField alloc ] initWithFrame : CGRectMake ( 10 , 120 , 300 , 30 ) ] ; number = [[UITextField alloc] initWithFrame: CGRectMake (10, 120, 300, 30)]; numero.borderStyle = UITextBorderStyleRoundedRect; numero.textAlignment = UITextAlignmentCenter; numero.keyboardType = UIKeyboardTypeNumberPad; "Inserisci il numero" ; numero.placeholder = @ "Enter number"; numero ] ; [Window addSubview: number]; / / Create the button UIButton buttonWithType : UIButtonTypeRoundedRect ] ; button = [UIButton buttonWithType: UIButtonTypeRoundedRect]; 10 , 180 , 300 , 30 ) ; bottone.frame = CGRectMake (10, 180, 300, 30); @ "Premi qui" forState : UIControlStateNormal ] ; [Button setTitle: @ "Click here" forState: UIControlStateNormal]; self action : @selector ( controllaNumero ) forControlEvents : UIControlEventTouchUpInside ] ; [AddTarget button: self action: @ selector (getNumber) forControlEvents: UIControlEventTouchUpInside]; bottone ] ; [Window addSubview: button]; ; [MyLabel release]; ; [NavigationItem release]; ; [MyNavigationBar release]; |
della scorsa volta, subito dopo il [mainWindow release]; inseriamo: Since the ' applicationDidFinishLaunching corresponds to viewDidLoad as last time, right after the [mainWindow release]; insert:
1 | + arc4random ( ) % 10 ; numeroACaso = 1 + arc4random ()% 10; |
Now we can do is implement the method controllaNumero , which will be identical (apart from the prototype) to the one used last time:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 | void ) controllaNumero { - (Void) {getNumber "Premuto bottone di controlla numero" ) ; NSLog (@ "Pressed button control number"); [ numero.text integerValue ] ; numeroInserito int = [numero.text integerValue]; message; NSString * message; "Il numero inserito è %d" , numeroInserito ) ; NSLog (@ "The number entered is% d", numeroInserito); numeroInserito <numeroACaso ) { if (numeroInserito <numeroACaso) { "Troppo basso..." ; message = @ "too low ..."; ( numeroInserito> numeroACaso ) { } Else if (numeroInserito> numeroACaso) { "Troppo alto..." ; message = @ "Too high ..."; ( numeroInserito == numeroACaso ) { } Else if (numeroInserito numeroACaso ==) { "Bravo hai indovinato" ; message = @ "Bravo you guessed it"; + arc4random ( ) % 10 ; numeroACaso = 1 + arc4random ()% 10; "Numero pensato %d" , numeroACaso ) ; NSLog (@ "Number% d thought," numeroACaso); } [ [ UIAlertView alloc ] UIAlertView alertMessaggio * = [[UIAlertView alloc] "Responso" initWithTitle: @ "Response" message: message delegate: nil "OK" cancelButtonTitle: @ "OK" ] ; otherButtonTitles: nil]; ; [AlertMessaggio show]; ; [AlertMessaggio release]; "" ; numero.text @ = ""; } |
We're done!
Conclusions and considerations
, proprio perchè volevo lasciarlo il più semplice e snello possibile e, anche, per dimostrare che non sono elementi sempre necessari. This example does not make direct use of a UIView or UIViewController , because I wanted to leave it as simple and streamlined as possible and, also, to show that the elements are not always necessary. However, inserting objects directly in the window can have some sense in this example and other sporadic contexts. portano comunque benefici in tantissimi altri casi, ein alcuni sono praticamente indispensabili; come avremo modo di vedere in futuro. The use of UIView and UIViewController still bring benefits in many other cases, andin some are almost indispensable, as we will see in the future.
iPhone: all system fonts
The Apple iPhone provides a limited number of fonts to developers. The list of available fonts is easily achieved by code, as we shall see. If you want to use your own fonts, for example by including it in the resources, it is a little more articulate and conivolge also the issue of licenses (rights) on fonts "embeddati" ... we'll talk later. Returning instead to present the official font nell'Apple iPhone these are (click on image to enlarge):
The Apple iPhone SDK allows access to the special system fonts. These are identified by particular constants and are:
1 2 3 | [ UIFont boldSystemFontOfSize : 12.0 ] ; UIFont myBoldFont * = [UIFont boldSystemFontOfSize: 12.0]; [ UIFont SystemFontOfSize : 12.0 ] ; UIFont mySystemFont * = [UIFont SystemFontOfSize: 12.0]; [ UIFont italicSystemFontOfSize : 12.0 ] ; UIFont myItalicFont * = [UIFont italicSystemFontOfSize: 12.0]; |
If you actually get a pointer to a font odei shown in the image above just use:
1 | [ UIFont fontWithName : @ "Helvetica-Bold" size : 22.0 ] ; UIFont myCustomFont * = [UIFont fontWithName: @ "Helvetica-Bold" size: 22.0]; |
As noted the management of the font is special, in addition to the family (Helvetica, Courier, etc ...) must specify the type (bold, italic, etc ...). In practice, therefore, a font must be provided with these features. The Helvetica, for example, is present with:
1 2 3 4 | Helvetica Helvetica-Bold Helvetica-Oblique Helvetica-BoldOblique |
If you want to display your fonts directly on the iPhone, here's some useful code line:
1 2 3 4 5 6 7 8 9 10 11 12 | listOfFonts = [ [ NSArray alloc ] initWithArray : [ UIFont familyNames ] ] ; NSArray * listOfFonts = [[ NSArray alloc] initWithArray: [UIFont familynames]]; subFontTypes; NSArray * subFontTypes; int i = 0 ; i< [ listOfFonts count ] ; i ++ ) { for (int i = 0; i <[listOfFonts count]; i + +) { "Font Family: %@" , [ listOfFonts objectAtIndex : i ] ) ; NSLog (@ "Font Family:% @", [listOfFonts objectAtIndex: i]); NSArray alloc ] initWithArray : [ UIFont fontNamesForFamilyName : [ listOfFonts objectAtIndex : i ] ] ] ; subFontTypes = [[ NSArray alloc] initWithArray: [UIFont fontNamesForFamilyName: [listOfFonts objectAtIndex: i]]]; int j = 0 ; j< [ subFontTypes count ] ; j ++ ) { for (int j = 0, j <[subFontTypes count] j + +) { "+----->Type: %@" , [ subFontTypes objectAtIndex : j ] ) ; NSLog (@ "+ -----> Type:% @", [subFontTypes objectAtIndex: j]); } ; [SubFontTypes release]; } ; [ListOfFonts release]; |
With the SDK 2.2.1 on my mortgage, I got:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 | Font Family: Courier + -----> Type: Courier + -----> Type: Courier-BoldOblique + -----> Type: Courier-Oblique + -----> Type: Courier-Bold Font Family: AppleGothic + -----> Type: AppleGothic Font Family: Arial + -----> Type: ArialMT + -----> Type: Arial-BoldMT + -----> Type: Arial-BoldItalicMT + -----> Type: Arial-ItalicMT Font Family: STHeiti TC + -----> Type: Light-STHeitiTC + -----> Type: Medium-STHeitiTC Font Family: Hiragino Kaku Gothic Pron + -----> Type: HiraKakuProN-W6 + -----> Type: HiraKakuProN-W3 Font Family: Courier New + -----> Type: CourierNewPS-BoldMT + -----> Type: CourierNewPS-ItalicMT + -----> Type: CourierNewPS-BoldItalicMT + -----> Type: CourierNewPSMT Font Family: Zapfino + -----> Type: Zapfino Font Family: Arial Unicode MS + -----> Type: ArialUnicodeMS Font Family: STHeiti SC + -----> Type: Medium-STHeitiSC + -----> Type: Light-STHeitiSC Font Family: American Typewriter + -----> Type: AmericanTypewriter + -----> Type: AmericanTypewriter-Bold Font Family: Helvetica + -----> Type: Helvetica-Oblique + -----> Type: Helvetica-BoldOblique + -----> Type: Helvetica + -----> Type: Helvetica-Bold Font Family: Marker Felt + -----> Type: Thin-MarkerFelt Font Family: Helvetica Neue + -----> Type: HelveticaNeue + -----> Type: HelveticaNeue-Bold Font Family: DB LCD Temp + -----> Type: DBLCDTempBlack Font Family: Verdana + -----> Type: Verdana-Bold + -----> Type: Verdana-BoldItalic + -----> Type: Verdana + -----> Type: Verdana-Italic Font Family: Times New Roman + -----> Type: TimesNewRomanPSMT + -----> Type: TimesNewRomanPS-BoldMT + -----> Type: TimesNewRomanPS-BoldItalicMT + -----> Type: TimesNewRomanPS-ItalicMT Font Family: Georgia + -----> Type: Georgia-Bold + -----> Type: Georgia + -----> Type: Georgia-BoldItalic + -----> Type: Georgia-Italic Font Family: STHeiti J + -----> Type: Medium-STHeitiJ + -----> Type: Light-STHeitiJ Font Family: Arial Rounded MT Bold + -----> Type: ArialRoundedMTBold Font Family: Trebuchet MS + -----> Type: TrebuchetMS-Italic + -----> Type: TrebuchetMS + -----> Type: Trebuchet-BoldItalic + -----> Type: TrebuchetMS-Bold Font Family: STHeiti K + -----> Type: Medium-STHeitiK + -----> Type: Light-STHeitiK |
iPhone FirstApp: Guess the number - Part 1
The first source that I went in his hands was written in Basic and consisted of a few lines of code, for enlightening me. It was a simple game that generated a random number from 1 to 10 and, through keyboard input, proved that the number entered was Maggione, less than or equal to the random number. Despite its rough simplicity remains, for me, one of the best examples - simple, fun and practical - to explain to those who do not know anything about programming what is meant actually for "computer program". So I decided to propose it for Apple iPhone, maybe will help someone ...
Trace Actionscript, Objective-C NSLog ()
, usata per il debug delle applicazioni. Taking up the post from Actionscript to Objective-C (where you put the code and comparing the syntax Actionscript and Objective-C) in Actionscript we have the convenient function trace ( ) , used for debugging applications. This function outputs an output to the console Adobe Flash development environment. It is mainly used during development and testing of "movie" / application. In XCode / Objective-C we have: NSLog ( ) . di Actionscript: The syntax of this function is very similar to the trace ( ) in Actionscript:
1 | "Sono una linea di debug" ) ; NSLog (@ "I am a debug line"); |
In Actionscript we have:
1 | "Sono una linea di debug" ) ; trace ("I am a debug line"); |
Apart from the use of sign (@), as you can see, are identical. The differences (and similarities) start when you want to display values of variables, for example in Actionscript we have:
1 2 3 | "Coordinata x:" + x + " coordinata y:" + y ) ; trace ("x-coordinate:" + x + "y coordinate:" + y); / / Or "Coordinate: " , x , y ) ; trace ("coordinates", x, y); |
In Objective-C we have:
1 | "Coordinata x:%i coordinata y:%i" , x, y ) ; NSLog (@ "x-coordinate: the y coordinate%% i", x, y); |
che opera sull'Apple System Log. Note:
NSLog()actually calls the more generic functionNSLogv ( )that works on Apple System Log. The functions are in fact identical, changing only the input parameters.
o sprintf ( ) . C developers will find very familiar with the formatting of strings, as with printf ( ) or sprintf ( ) . For details, see String Format Specifiers .








Latest Comments
Mark : Thank you very much, I've lit
I solved it by setting [cc_objc] / / OptionViewController.m - ...
Giovambattista Fazioli : @ Mark: I suggest you think a more correct approach. If you run the subclass of the tab ...
Mark : Excuse the spam .. I noticed that there is an error .. here is the correction [cc_objc] / PrimaClasse.h ** ** / # import ...
Marco : forgotten .. in [cci] OptionViewController [/ cci] for [cci] @ syntetize [/ cci] I put the delegate
louis : very clear and simple I have to admit that writing a pa hardly use delegates created by ...