Category Archives: Apple
Categories: Objective – C
Las categorías son una de las características más útiles de Objective-C. En esencia, una categoría le permite añadir métodos a una clase existente, sin que la subclasificación o necesidad de conocer cualquiera de los detalles de cómo se implementa.
Una categoría recoge las implementaciones de método en archivos separados. El programador puede colocar grupos de métodos relacionados en una categoría para que sean más legibles. En otras palabras, si deseas agregar un método a todas las instancias de NSString en tu aplicación, solo hay añadir una nueva categoría. No hay necesidad de una subclase personalizada.
Por ejemplo, voy a añadir dos métodos para un NSString. uno para determinar si el contenido es una URL y la otra para añadir un método de reverseString.
Se vería así:
- Crear un nuevo proyecto de XCode un “Command Line Tool”. Lo llamaré ExtendsNSString

- A continuación, cree una nueva clase Objective-C (lo voy a llamar a NSString_Extend ). Elimine todo el código en el archivo de cabecera (NSString_Extend.h) y ponemos el siguiente código:
#import <Cocoa/Cocoa.h> @interface NSString (Extends) - (BOOL) isURL; - (NSString *)reverseString; @end
es muy similar a una declaración de clase. La diferencia es que no hay una súper clase, y hay un nombre para la categoría entre paréntesis, el nombre puede ser el que quieras.
- Ahora elimine todo el código en el archivo de implementación ( NSString_Extend.m) y ponemos el siguiente código:
#import "NSString_Extend.h" @implementation NSString (Extends) - (BOOL) isURL { if ( [self hasPrefix:@"http://"] ) return YES; else return NO; } - (NSString *) reverseString { NSUInteger len = [self length]; NSMutableString *rtr=[NSMutableString stringWithCapacity:len]; // unichar buf[1]; while (len > (NSUInteger)0) { unichar uch = [self characterAtIndex:--len]; [rtr appendString:[NSString stringWithCharacters:&uch length:1]]; } return rtr; } @endA diferencia de las subclases, las categorías no se puede agregar variables de instancia. Puede, sin embargo, utilizar categorías para sustituir métodos existentes en las clases, pero debes hacerlo con mucho cuidado.
- Ahora usted puede utilizar estos métodos en cualquier NSString, vamos a cambiar el main.m, que se verá algo como lo siguiente:
#import <Foundation/Foundation.h> #import "NSString_Extend.h" int main (int argc, const char * argv[]) { NSAutoreleasePool * pool = [[NSAutoreleasePool alloc] init]; // insert code here... NSString* string1 = @"http://pixar.com/"; NSString* string2 = @"Pixar"; if ( [string1 isURL] ) NSLog (@"string1 is a URL"); else NSLog (@"string1 is not a URL"); if ( [string2 isURL] ) NSLog (@"string2 is a URL"); else NSLog (@"string2 is not a URL"); NSString *test = [@"!A string to be reverted!" reverseString]; NSLog(@"%@", test); [pool drain]; return 0; }Cuando se realizan cambios en una clase con una categoría, esta afecta a todas las instancias de esa clase en toda la aplicación.
Puedes descargar el codigo de este tutorial Aqui
Fuente:
The only way to do great work is to love what you do
Quote
Your work is going to fill a large part of your life, and the only way to be truly satisfied is to do what you believe is great work. And the only way to do great work is to love what you do. If you haven’t found it yet, keep looking, and don’t settle. As with all matters of the heart, you’ll know when you find it.
Steve Jobs
Singleton en Objective-c
Uno de los patrones de diseño mas utilizados es el singleton. El singleton es usado para instanciar solo una vez una clase. Encontre un template para un singleton en objective-c el cual quiero compartir con ustedes.
Pero para este caso usare un singleton para guardar/retener un valor de tipo NSString
A continuación pongo el código para el singleton.
MySingleton.h
#import <Foundation/Foundation.h>
@interface MySingleton : NSObject {
NSString *stringValue;
}
+ (MySingleton *)sharedMySingleton;
- (NSString *)stringValue;
- (void)setStringValue:(NSString *)value;
@end
MySingleton.m
#import "MySingleton.h"
@implementation MySingleton
static MySingleton* _sharedMySingleton = nil;
+(MySingleton*)sharedMySingleton
{
@synchronized([MySingleton class])
{
if (!_sharedMySingleton)
[[self alloc] init];
return _sharedMySingleton;
}
return nil;
}
+(id)alloc
{
@synchronized([MySingleton class])
{
NSAssert(_sharedMySingleton == nil, @"Attempted to allocate a second instance of a singleton.");
_sharedMySingleton = [super alloc];
return _sharedMySingleton;
}
return nil;
}
-(id)init {
self = [super init];
if (self != nil) {
// initialize stuff here
stringValue = nil;
}
return self;
}
- (NSString *)stringValue{
return stringValue;
}
- (void)setStringValue:(NSString *)value{
stringValue = value;
}
@end
Si quieres Guardar(Set) el stringValue, usamos lo siguiente:
[[MySingleton sharedMySingleton] setStringValue:@"Hello World"];
Y si quieres obtener(Get) el stringValue, usamos lo siguiente:
[[MySingleton sharedMySingleton] stringValue];
Puedes descargar una copia de un código funcional de github
Fuente del Post : getsetgames
Incorporar Youtube Video en iPad
Here I put a small tutorial for embedded a youtube video on iPad also works on iPhone.
Note: The iPad/iPhone simulator does not allow online reproduction, the video will only be visible in a real device .
- First we create a View-based Application project.

- I will name it EmbeddedVideo, you can name it whatever you like.

- Open the EmbeddedVideoViewController.xib and added a UIWebView(drag and drop).

- Then in EmbeddedVideoViewController.h create an IBOutlet for ourUIWebView, leaving something like this:
@interface EmbeddedVideoViewController : UIViewController { UIWebView *webVideo; } @property (nonatomic, retain) IBOutlet UIWebView *webVideo; @end - We connect the IBOutlet with UIWebView, open the EmbeddedVideoViewController.xib and in File’s Owner in the Outlets section select/drag on our UIWebView:

- We opened in EmbeddedVideoViewController.m within viewDidLoad method (if commented, uncomment it) add a few lines of code, something like this:
- (void)viewDidLoad { [super viewDidLoad]; NSString *videoURL = @"http://www.youtube.com/watch?v=JOddp-nlNvQ"; NSString *htmlString =[[NSString alloc] initWithFormat:@" ",videoURL]; [webVideo setAllowsInlineMediaPlayback:YES]; [webVideo loadHTMLString:htmlString baseURL:nil]; } -
After that compile and run on our device and we’ll see something like this

Mac Chick del Mes de Abril 2010: Jessica Vaugn
Para la edicion de Abril macenstein nos presenta a esta encantadora modelo Jessica Vaugn.
Personal website: www.jessicavaugn.com



Mac Chick del mes de Marzo 2010: Kaki West
En este mes (Marzo ‘10) macenstein nos presenta a esta encantadora modelo y actriz Kaki West.
• Web site(s):
Personal website: WWW.KAKIWEST.COM,
Follow Me : WWW.TWITTER.COM/KAKIWEST10
Facebbok Fan Page : www.facebook.com/officalkakiwestfanpage
Model: www.modelmayhem.com/kakiwest
Como convertir .bin/.cue a iso in Mac OS X
Si tienes una imagen .bin y lo quieres convertir en .iso para después quemarlo o simplemente montarlo en Mac OS X. Aquí estan un par de pasos para lograrlo usaremos 2 métodos.
Usando BinChunker
Es una aplicación open source de linea de comando. Pueden seguir este tutotial para usarlo.
Usando Toast Titanium
Toast es un programa de paga para quemar discos y demas en mac os, pero pueden encontrarlo para descargar solo googleandolo :p.
1-. Das click derecho sobre el archivo .bin y lo abres con Toast. Una vez que abrio en el menu Archivo y seleccionas “Guardar como imagen en disco”.
2-. Después solo cambias la extensión .toast por .iso.
Al terminar tendras tu .iso lista para quemarla o montarla sonbre tu mac.
Mac Chick de Enero 2010: Alena Savostikova
En este mes (Enero ’10) macenstein nos presenta a esta encantadora modelo rusa Alena Savostikova, originaria de Kaliningrad Rusia.
Para saber y ver mas acerca de la mac chick de enero checa:
Y ahora, Desde Rusia con amor… Alena Savostikova
CoRD: Remote Desktop Client para Mac OS X
Hace un par de dias necesitaba conectarme a una servidor con Windows 2008 server y el cliente que utilizaba no era capaz de realizar la conexión, me di a la tarea de buscar un cliente para Remote Desktop Conection para Mas OS X y me tope con este excelente Cliente “CoRD” .
CoRD es un cliente de escritorio remoto para Mac OS X, esto es, para poderte conectar a maquinas con Microsoft Windows usando el protocolo RDP.
Tiene soporte para Mac OS X 10.5 (Leopard) y 10.6 (Snow Leopard).
Descargar CoRD









