Index: /trunk/ccl/examples/objc-clos.lisp
===================================================================
--- /trunk/ccl/examples/objc-clos.lisp	(revision 813)
+++ /trunk/ccl/examples/objc-clos.lisp	(revision 814)
@@ -314,5 +314,5 @@
 
 (defclass foreign-direct-slot-definition (direct-slot-definition)
-  ((foreign-type :initarg :foreign-type :initform :id :accessor foreign-slot-definition-foreign-type)
+  ((foreign-type  :initform :id :accessor foreign-slot-definition-foreign-type)
    (offset :initarg :offset
 	   :initform nil
@@ -321,6 +321,14 @@
 offset, relative to the start of the instance's slots.  The corresponding
 effective slot definition's offset is a product of this value and the
-instance_size of its ObjC superclass."))
-  (:default-initargs :foreign-type :id))
+instance_size of its ObjC superclass.")))
+
+(defmethod shared-initialize :after ((slotd foreign-direct-slot-definition)
+                                     slot-names
+                                     &key (foreign-type '(:id)))
+  (declare (ignore slot-names))
+  (if (and (consp foreign-type)
+           (null (cdr foreign-type)))
+    (setf (foreign-slot-definition-foreign-type slotd) (car foreign-type))
+    (error "~S must be a 1-element list" foreign-type)))
 
 (defclass foreign-effective-slot-definition (effective-slot-definition)
@@ -417,5 +425,5 @@
 	    (make-direct-slot-definition
 	     class
-	     `(:foreign-type ,slot-type :offset ,offset ,@initargs))))
+	     `(:foreign-type ,(list slot-type) :offset ,offset ,@initargs))))
       slot)))
 	   
