proper

How to change the highlighted background color of a UITableView’s cell

Changing the background color of the selected cell in a UITableView

The default value for selectedBackgroundView is nil for cells in plain-style tables (UITableViewStylePlain) and non-nil for section-group tables (UITableViewStyleGrouped).

If you’re using a plain-style table, you must alloc an init a new UIView with the desired background color, and then assign it to selectedBackgroundView.… Leer mas

NSDatePickerPalette

NSDate: Working with dates in Cocoa, creating and decomposing.

Create a NSDate from its components (day, month, year)

You don’t use a init method in NSDate, instead, you use a method of NSCalendar (dateFromComponents:):

Method that initializes a NSDate form an ISO 8601 date representation (YYYYMMDD):

Tokenize a NSDate into its components (day, month, year, etc…)

You also use a method form NSCalendar(components:fromDate):

Tokenize the difference between 2 dates into its components (day, month, year, etc…)

Use a similar method from NSCalendar: components:fromDate:toDate:options:

Leer mas

NSin

NSInvocation para torpes

NSInvocation

En entornos orientados a objetos muy dinámicos, como es el caso de Cocoa & Objective C o Smalltalk, los mensajes entre objetos están siendo continuamente enviados, redireccionados, guardados para uso posterior, reutilizados y distribuidos a otros objetos. Nada de esto es posible en entornos más estáticos, como pueda ser C++.… Leer mas

Settings, General y Keyboard

Subclasificar UINavigationController

UINavigationController

Necesitaba reproducir un sonido cuando el usuario le daba al botón superior izquierdo de un UINavigationController. Es decir, el botón de “patrás” (en términos tésnicos).

Primer intento: Hay delegates pa tó

La primera sospecha, fue buscar algún delegate, ya que como bien dijo el filósofo español “Rafael Guerra”: en Cocoa hay delegates pa tó.… Leer mas

alloc

Two staged creation in Cocoa and Objective C and why we need it

Two Staged Creation of objects in Cocoa and Objective C

Unlike other OO languages such as Smalltalk or Java, Cocoa separates memory allocation from instance initialization. The very first versions of NextStep had single creation methods, as in Smalltalk.

This was changed, because of the need of several different allocation strategies to cup with the stringent memory limitations of that time.… Leer mas

gcd

Cómo retrasar la ejecución de un método en Objective C

Retrasar la ejecución de un método en Cocoa

En Cocoa tenemos la posibilidad de enviar un mensaje a un objeto pasados n segundos con performSelector:withObject:afterDelay: y demás métodos similares definidos en NSObject.

Sin embargo, a veces se echa de menos el poder ejecutar código arbitrario (no necesariamente un método o solo un método) con un cierto retraso.… Leer mas

logo_freesound

Cómo reproducir sonidos en iOS

Reproducir sonidos en iOS: Formatos de Sonido para iPhone e iPad

Con Cocoa-Touch puedes reproducir sonidos en los siguientes formatos:

  1. wav (no comprimido)
  2. mp3 (comprimido)
  3. aiff (comprimido)
  4. caff (no comprimido)
Ogg, a fecha de hoy (Junio 2011) no es uno de ellos.Leer mas
Xf9Dr

Cómo añadir una framework a Xcode 4

Añadir una framework nueva a Xcode 4

En Xcode 4 el antiguo menú de “Add framework” ha sido sustituido por algo mucho más intuitivo, directo y sencillo. Como algunas mentes limitadas y resistentes a los cambios pueden no haberlo pillado, documento el proceso:

  1. En el navegador de proyecto (“project navigator”), selecciona tu proyecto.
Leer mas
UITextView con bordes redondeados

Crear un UITextView con un borde redondeado, similar a un UITextField

UITextView similar a un UITextField

No hay ninguna propiedad que “mágicamente” añada un borde y menos aun redondeado a UITextView. Sin embrago, es relativamente fácil hacerlo por código, echando mano a Quartz.

En tu viewWillAppear, añade el siguiente código:

McsIQ

Sorting objects in Cocoa

Sorting objects in Cocoa: Sorting using selector (in ascending order)

This is the most common sorting method for sorting objects in Cocoa. It uses a selector that must return an NSComparisonResult (either NSOrderedAscending, NSOrderedSame, or NSOrderedDescending).
The most common selector is compare:.Leer mas
libr

How to add a static library to iOS project in Xcode 4

Static library to iOS

After struggling for a while to include CHDataStructures to my iOS project, here’s a step by step guide that will allow you to add any static library without losing your mind.

STEP 1: Add the static library sources to a Source Tree
Go to XCode preferences and select the Source Trees tab, add a new source tree whereas the name and display name are WHATEVER_LIB_SRC and the path is the full path to the source code.… Leer mas
Copland_open_file_dialog_screenshot

Reducing the “syntactic castor-oil” in Objective C

Reducing the “syntactic castor-oil” in Objective C with explicit collections

I just finished reading “Regarding Objective-C & Copland 2010”, where the author discusses if Objective C can be considered a “modern language”. The provided description for a “modern language” is arguable (and I certainly don’t agree with all the points), but Objective C seems to do pretty well:

Automatic memory management.

Leer mas
singleton-uml

Cómo crear un Singleton en Objective C y Cocoa

Singleton en Cocoa y Objective C

Aunque el Singleton parece que se estuviese convirtiendo en el apestado de moda, como el goto de antaño,
no hay motivos suficientes para mandarlo al “pasillo de la muerte”.

Los principales argumentos contra el uso de un Singleton parecen ser:

  1. Seguridad en código multihebra: Coño, sólo si lo implementas mal.
Leer mas
FullScreenIPhone_rotation_bars

Enseñar distintas UIViews cuando se rota el iPhone o iPad

UIViews

Aunque puedes crear una vista que se adapta a la orientación horizontal y vertical, no es nada sencillo el hacerlo en caso de tener una jerarquía de UIViews no trivial.  La posibilidad de enseñar vistas distintas dependiendo de la orientación es interesante por varias razones distintas:

  1. Tu vista es muy compleja y resulta imposible o muy difícil reaprovecharla en una orientación distinta.
Leer mas
safari_logo_1

Forzar a safari para que muestre el código fuente en TextMate

Safari y el código fuente

Cada vez que le pides a Safari que te muestre el código fuente de una página, tiene el desagradable hábito de hacerlo en TextEdit.

Ahora bien, si tienes TextMate, ¿para qué quieres TextEdit?

Tras buscar un poco en internet, encontré la solución es este AppleScript:

tell application "Safari" to set theSource to source of document 1

-- saving it to a file seems to be needed to get TextMate to do color coding
set fp to open for access "/tmp/TextMate temp file.txt" with write permission
write theSource to fp
close access fp

 

 

-- open the temp file in TextMate
tell application "TextMate"
activate
open "/tmp/TextMate temp file.txt"
end tell

Guárdalo en la carpeta de scripts de Safari y ya podrás ver siempre el código fuente en TextMate.… Leer mas

cocoalogo

Planeta Cocoa

Planeta Cocoa: Agregador de blogs sobre Cocoa y Cocoa Touch en Español

Se anuncia a los 4 vientos PlanetaCocoa: un agregador de blogs en Español sobre Cocoa, Cocoa Touch y programación en iOS y OSX en general.

Lo más probable es que me halla olvidado de alguien, así que si tu blog no está ahí, deja un comentario con la url o dame un toque en frrtemp ARROBA gmail PUNTO com.… Leer mas

wonderful-dark-apple-desktop-mac-os-leopard

Temas oscuros de XCode

Temas oscuros de Xcode: pocas opciones

Las combinaciones de colores oscuros siempre me han parecido menos hirientes para los ojos, y permiten pasar más tiempo frente a la pantalla sin terminar con la vista cansada. En el caso de mi MBP 17”, las fuentes me resultan muy pequeñas y tras un uso prolongado me resultan poco cómodas.… Leer mas

gold

Las 3 reglas de oro de la gestión de memoria en Cocoa & Objective C

Gestión de memoria en Cocoa & Objective C

Aunque Objetive-C 2.0 incluye un recolector de basura (gracias sean dadas al Altísimo), si quieres programar apps para iPhone, no puedes contar con ello. Desgraciadamente, a fecha de hoy (2011) en Cocoa Touch no es posible utilizar el GC (recolector de basura) puesto que su uso continuado gastaría la batería a demasiada velocidad, o al menos eso dice Steve Jobs.… Leer mas

ignore

Qué archivos colocar en .gitignore para XCode

.gitignore

Antes de dar un ejemplo concreto de .gitignore para XCode, conviene recordar qué tipo de ficheros se deben de ignorar en un sistema de control de versiones, ya sea Git u otro.

  1. Ficheros de configuración personal, tales como *.pbxuser. Estos contienen la configuración de tu entorno personal de desarrollo, lo cual es de muy poca utilidad para otro desarrollador que esté trabajando sobre el mismo código.
Leer mas