Class: OSX::ObjcID

Inherits:
Object show all
Defined in:
src/objc/cls_objcid.m,
src/objc/cls_objcid.m

Overview

Root class of Objective-C classes in Ruby world.

Examples:

OSX::NSObject.superclass
=> OSX::ObjcID
OSX::NSProxy.superclass
=> OSX::ObjcID
OSX::NSString.superclass
=> OSX::NSObject

Class Method Summary (collapse)

Instance Method Summary (collapse)

Class Method Details

+ (Object ) new_with_ocid

This method is part of a private API. You should avoid using this method if possible, as it may be removed or be changed in the future.

85
86
87
88
89
# File 'src/objc/cls_objcid.m', line 85
static VALUE
wrapper_objcid_s_new_with_ocid(VALUE klass, VALUE rbocid)
{
 return objcid_new_with_ocid(klass, NUM2OCID(rbocid));
}

Instance Method Details

- (String ) __inspect__

Note:

overrides Object#inspect.

Object#inspect.

Returns:

136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
# File 'src/objc/cls_objcid.m', line 136
static VALUE
objcid_inspect(VALUE rcv)
{
 char s[512];
 id ocid;
 struct bsConst * bs_const;
 const char * class_desc;
 id pool;
 ocid = OBJCID_ID(rcv);
 bs_const = find_magic_cookie_const_by_value(ocid);
 if (bs_const != NULL) {
 pool = nil;
 class_desc = bs_const->class_name;
 }
 else {
 pool = [[NSAutoreleasePool alloc] init];
 class_desc = [[[ocid class] description] UTF8String];
 }
 snprintf(s, sizeof(s), "#<%s:0x%lx class='%s' id=%p>",
 rb_class2name(CLASS_OF(rcv)),
 NUM2ULONG(rb_obj_id(rcv)), 
 class_desc, ocid);
 if (pool != nil)
 [pool release];
 return rb_str_new2(s);
}

- (Number) __ocid__

Objective-C id value as Number.

Examples:

url = OSX::NSURL.URLWithString('http://www.apple.com')
url.inspect
=> "#<OSX::NSURL:0x8775b0c0 class='NSURL' id=0x7fe3b2913690>"
url.__ocid__
=> 140615930164880

Returns:

  • (Number)
125
126
127
128
129
# File 'src/objc/cls_objcid.m', line 125
static VALUE
objcid_ocid(VALUE rcv)
{
 return OCID2NUM(OBJCID_ID(rcv));
}

- (Boolean) eql? Also known as: ==

Note:

overrides Object#eql? and Object#==.

Returns true when other contains same Objective-C "id".

Examples:

num1 = OSX::NSNumberWithInt(1)
num2 = OSX::NSNumberWithInt(1)
num1.eql?(num2)
# => true
num1 == num2
# => true
num1.__id__ == num2.__id__
# => false
num1.__ocid__ == num2.__ocid__
# => true

Returns:

  • (Boolean)
203
204
205
206
207
208
209
210
# File 'src/objc/cls_objcid.m', line 203
static VALUE
objcid_eql(VALUE rcv, VALUE other)
{
 if (rb_obj_is_kind_of(other, _kObjcID) && OBJCID_ID(rcv) == OBJCID_ID(other)) {
 return Qtrue;
 }
 return Qfalse;
}

- (FIXNUM) hash

Note:

overrides Object#hash.

Returns an hash value form internal Objective-C "id".

Examples:

num1 = OSX::NSNumberWithInt(1)
num2 = OSX::NSNumberWithInt(1)
num1.__id__ == num2.__id__
# => false
num1.hash == num2.hash
# => true

Returns:

  • (FIXNUM)
179
180
181
182
183
184
185
186
# File 'src/objc/cls_objcid.m', line 179
static VALUE
objcid_hash(VALUE rcv)
{
 id ocid;
 ocid = OBJCID_ID(rcv);
 return LONG2FIX(ocid);
}

- (Object ) initialize_copy

This method is part of a private API. You should avoid using this method if possible, as it may be removed or be changed in the future.

Returns shallow copied object by Object#dup.

108
109
110
111
112
113
# File 'src/objc/cls_objcid.m', line 108
static VALUE
objcid_init_copy(VALUE self, VALUE orig)
{
 OBJCID_DATA_PTR(self)->ocid = OBJCID_DATA_PTR(orig)->ocid;
 return self;
}

- (String ) inspect

Note:

overrides Object#inspect.

Object#inspect.

Returns:

136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
# File 'src/objc/cls_objcid.m', line 136
static VALUE
objcid_inspect(VALUE rcv)
{
 char s[512];
 id ocid;
 struct bsConst * bs_const;
 const char * class_desc;
 id pool;
 ocid = OBJCID_ID(rcv);
 bs_const = find_magic_cookie_const_by_value(ocid);
 if (bs_const != NULL) {
 pool = nil;
 class_desc = bs_const->class_name;
 }
 else {
 pool = [[NSAutoreleasePool alloc] init];
 class_desc = [[[ocid class] description] UTF8String];
 }
 snprintf(s, sizeof(s), "#<%s:0x%lx class='%s' id=%p>",
 rb_class2name(CLASS_OF(rcv)),
 NUM2ULONG(rb_obj_id(rcv)), 
 class_desc, ocid);
 if (pool != nil)
 [pool release];
 return rb_str_new2(s);
}

- (Object ) release

Sends Objective-C "release" message to reciever.

94
95
96
97
98
99
100
101
102
# File 'src/objc/cls_objcid.m', line 94
static VALUE
objcid_release(VALUE rcv)
{
 if (OBJCID_DATA_PTR(rcv)->can_be_released) {
 [OBJCID_ID(rcv) release];
 OBJCID_DATA_PTR(rcv)->can_be_released = NO;
 }
 return rcv;
}

AltStyle によって変換されたページ (->オリジナル) /