1 | #import <Foundation/Foundation.h> |
2 | |
3 | #if defined(__APPLE__) |
4 | #if defined(__arm__) || defined(__arm64__) || defined(__aarch64__) |
5 | #define IOS |
6 | #endif |
7 | #endif |
8 | |
9 | #if defined(IOS) |
10 | #import <Foundation/NSGeometry.h> |
11 | #else |
12 | #import <Carbon/Carbon.h> |
13 | #endif |
14 | |
15 | @interface MyClass : NSObject { |
16 | int i; |
17 | char c; |
18 | float f; |
19 | } |
20 | |
21 | - (id)initWithInt:(int)x andFloat:(float)y andChar:(char)z; |
22 | - (int)doIncrementByInt:(int)x; |
23 | |
24 | @end |
25 | |
26 | @interface MyOtherClass : MyClass { |
27 | int i2; |
28 | MyClass *backup; |
29 | } |
30 | - (id)initWithInt:(int)x andFloat:(float)y andChar:(char)z andOtherInt:(int)q; |
31 | |
32 | @end |
33 | |
34 | @implementation MyClass |
35 | |
36 | - (id)initWithInt:(int)x andFloat:(float)y andChar:(char)z { |
37 | self = [super init]; |
38 | if (self) { |
39 | self->i = x; |
40 | self->f = y; |
41 | self->c = z; |
42 | } |
43 | return self; |
44 | } |
45 | |
46 | - (int)doIncrementByInt:(int)x { |
47 | self->i += x; |
48 | return self->i; |
49 | } |
50 | |
51 | @end |
52 | |
53 | @implementation MyOtherClass |
54 | |
55 | - (id)initWithInt:(int)x andFloat:(float)y andChar:(char)z andOtherInt:(int)q { |
56 | self = [super initWithInt:x andFloat:y andChar:z]; |
57 | if (self) { |
58 | self->i2 = q; |
59 | self->backup = [[MyClass alloc] initWithInt:x andFloat:y andChar:z]; |
60 | } |
61 | return self; |
62 | } |
63 | |
64 | @end |
65 | |
66 | @interface Atom : NSObject { |
67 | float mass; |
68 | } |
69 | - (void)setMass:(float)newMass; |
70 | - (float)mass; |
71 | @end |
72 | |
73 | @interface Molecule : NSObject { |
74 | NSArray *atoms; |
75 | } |
76 | - (void)setAtoms:(NSArray *)newAtoms; |
77 | - (NSArray *)atoms; |
78 | @end |
79 | |
80 | @implementation Atom |
81 | |
82 | - (void)setMass:(float)newMass { |
83 | mass = newMass; |
84 | } |
85 | - (float)mass { |
86 | return mass; |
87 | } |
88 | |
89 | @end |
90 | |
91 | @implementation Molecule |
92 | |
93 | - (void)setAtoms:(NSArray *)newAtoms { |
94 | atoms = newAtoms; |
95 | } |
96 | - (NSArray *)atoms { |
97 | return atoms; |
98 | } |
99 | @end |
100 | |
101 | @interface My_KVO_Observer : NSObject |
102 | - (void)observeValueForKeyPath:(NSString *)keyPath |
103 | ofObject:(id)object |
104 | change:(NSDictionary *)change |
105 | context:(void *)context; |
106 | - (id)init; |
107 | - (void)dealloc; |
108 | @end |
109 | |
110 | @implementation My_KVO_Observer |
111 | - (void)observeValueForKeyPath:(NSString *)keyPath |
112 | ofObject:(id)object |
113 | change:(NSDictionary *)change |
114 | context:(void *)context { |
115 | // we do not really care about KVO'ing - do nothing |
116 | return; |
117 | } |
118 | - (id)init { |
119 | self = [super init]; |
120 | return self; |
121 | } |
122 | |
123 | - (void)dealloc { |
124 | [super dealloc]; |
125 | } |
126 | @end |
127 | |
128 | int main(int argc, const char *argv[]) { |
129 | |
130 | NSAutoreleasePool *pool = [[NSAutoreleasePool alloc] init]; |
131 | |
132 | MyClass *object = [[MyClass alloc] initWithInt:1 andFloat:3.14 andChar:'E']; |
133 | |
134 | [object doIncrementByInt:3]; |
135 | |
136 | MyOtherClass *object2 = [[MyOtherClass alloc] initWithInt:2 |
137 | andFloat:6.28 |
138 | andChar:'G' |
139 | andOtherInt:-1]; |
140 | |
141 | [object2 doIncrementByInt:3]; |
142 | |
143 | NSNumber *num1 = [NSNumber numberWithInt:5]; |
144 | NSNumber *num2 = [NSNumber numberWithFloat:3.14]; |
145 | NSNumber *num3 = [NSNumber numberWithDouble:3.14]; |
146 | NSNumber *num4 = [NSNumber numberWithUnsignedLongLong:0xFFFFFFFFFFFFFFFE]; |
147 | NSNumber *num5 = [NSNumber numberWithChar:'A']; |
148 | NSNumber *num6 = [NSNumber numberWithUnsignedLongLong:0xFF]; |
149 | NSNumber *num7 = [NSNumber numberWithLong:0x1E8480]; |
150 | NSNumber *num8_Y = [NSNumber numberWithBool:YES]; |
151 | NSNumber *num8_N = [NSNumber numberWithBool:NO]; |
152 | NSNumber *num9 = [NSNumber numberWithShort:0x1E8480]; |
153 | NSNumber *num_at1 = @12; |
154 | NSNumber *num_at2 = @-12; |
155 | NSNumber *num_at3 = @12.5; |
156 | NSNumber *num_at4 = @-12.5; |
157 | NSNumber *num_at5 = @'a'; |
158 | NSNumber *num_at6 = @42.123f; |
159 | NSNumber *num_at7 = @43.123; |
160 | NSNumber *num_at8 = @12345ll; |
161 | NSNumber *num_at9 = @0xF1234567890abcdeull; |
162 | NSNumber *num_at9b = @-1070935975400915746; |
163 | NSNumber *num_at10 = @YES; |
164 | NSNumber *num_at11 = @NO; |
165 | |
166 | NSDecimalNumber *decimal_number = |
167 | [NSDecimalNumber decimalNumberWithMantissa:123456 |
168 | exponent:-10 |
169 | isNegative:NO]; |
170 | NSDecimalNumber *decimal_number_neg = |
171 | [NSDecimalNumber decimalNumberWithMantissa:123456 |
172 | exponent:10 |
173 | isNegative:YES]; |
174 | NSDecimalNumber *decimal_one = [NSDecimalNumber one]; |
175 | NSDecimalNumber *decimal_zero = [NSDecimalNumber zero]; |
176 | NSDecimalNumber *decimal_nan = [NSDecimalNumber notANumber]; |
177 | |
178 | NSString *str0 = [num6 stringValue]; |
179 | |
180 | NSString *str1 = |
181 | [NSString stringWithCString:"A rather short ASCII NSString object is here" |
182 | encoding:NSASCIIStringEncoding]; |
183 | |
184 | NSString *str2 = [NSString |
185 | stringWithUTF8String:"A rather short UTF8 NSString object is here" ]; |
186 | |
187 | NSString *str3 = @"A string made with the at sign is here" ; |
188 | |
189 | NSString *str4 = [NSString |
190 | stringWithFormat:@"This is string number %ld right here" , (long)4]; |
191 | |
192 | NSRect ns_rect_4str = {{1, 1}, {5, 5}}; |
193 | |
194 | NSString *str5 = NSStringFromRect(ns_rect_4str); |
195 | |
196 | NSString *str6 = [@"/usr/doc/README.1ST" pathExtension]; |
197 | |
198 | const unichar myCharacters[] = {0x03C3, 'x', 'x'}; |
199 | NSString *str7 = [NSString |
200 | stringWithCharacters:myCharacters |
201 | length:sizeof myCharacters / sizeof *myCharacters]; |
202 | |
203 | NSString *str8 = |
204 | [@"/usr/doc/" |
205 | @"file." |
206 | @"hasVeryLongExtensionThisTimehasVeryLongExtensionThisTimehasVeryLongExt" |
207 | @"ensionThisTimehasVeryLongExtensionThisTimehasVeryLongExtensionThisTime" |
208 | @"hasVeryLongExtensionThisTimehasVeryLongExtensionThisTimehasVeryLongExt" |
209 | @"ensionThisTimehasVeryLongExtensionThisTimehasVeryLongExtensionThisTime" |
210 | @"hasVeryLongExtensionThisTimehasVeryLongExtensionThisTimehasVeryLongExt" |
211 | @"ensionThisTimehasVeryLongExtensionThisTimehasVeryLongExtensionThisTime" |
212 | @"hasVeryLongExtensionThisTimehasVeryLongExtensionThisTimehasVeryLongExt" |
213 | @"ensionThisTimehasVeryLongExtensionThisTimehasVeryLongExtensionThisTime" |
214 | @"hasVeryLongExtensionThisTimehasVeryLongExtensionThisTimehasVeryLongExt" |
215 | @"ensionThisTimehasVeryLongExtensionThisTimehasVeryLongExtensionThisTime" |
216 | @"hasVeryLongExtensionThisTimehasVeryLongExtensionThisTimehasVeryLongExt" |
217 | @"ensionThisTime" pathExtension]; |
218 | |
219 | const unichar myOtherCharacters[] = { |
220 | 'a', ' ', 'v', 'e', 'r', 'y', ' ', 'm', 'u', 'c', 'h', ' ', 'b', 'o', |
221 | 'r', 'i', 'n', 'g', ' ', 't', 'a', 's', 'k', ' ', 't', 'o', ' ', 'w', |
222 | 'r', 'i', 't', 'e', ' ', 'a', ' ', 's', 't', 'r', 'i', 'n', 'g', ' ', |
223 | 't', 'h', 'i', 's', ' ', 'w', 'a', 'y', '!', '!', 0x03C3, 0}; |
224 | NSString *str9 = [NSString stringWithCharacters:myOtherCharacters |
225 | length:sizeof myOtherCharacters / |
226 | sizeof *myOtherCharacters]; |
227 | |
228 | const unichar myNextCharacters[] = {0x03C3, 0x0000}; |
229 | |
230 | NSString *str10 = [NSString |
231 | stringWithFormat:@"This is a Unicode string %S number %ld right here" , |
232 | myNextCharacters, (long)4]; |
233 | |
234 | NSString *str11 = NSStringFromClass([str10 class]); |
235 | |
236 | NSString *label1 = @"Process Name: " ; |
237 | NSString *label2 = @"Process Id: " ; |
238 | NSString *processName = [[NSProcessInfo processInfo] processName]; |
239 | NSString *processID = [NSString |
240 | stringWithFormat:@"%d" , [[NSProcessInfo processInfo] processIdentifier]]; |
241 | NSString *str12 = [NSString |
242 | stringWithFormat:@"%@ %@ %@ %@" , label1, processName, label2, processID]; |
243 | |
244 | NSString *strA1 = |
245 | [NSString stringWithCString:"A rather short ASCII NSString object is here" |
246 | encoding:NSASCIIStringEncoding]; |
247 | |
248 | NSString *strA2 = [NSString |
249 | stringWithUTF8String:"A rather short UTF8 NSString object is here" ]; |
250 | |
251 | NSString *strA3 = @"A string made with the at sign is here" ; |
252 | |
253 | NSString *strA4 = [NSString |
254 | stringWithFormat:@"This is string number %ld right here" , (long)4]; |
255 | |
256 | NSString *strA5 = NSStringFromRect(ns_rect_4str); |
257 | |
258 | NSString *strA6 = [@"/usr/doc/README.1ST" pathExtension]; |
259 | |
260 | NSString *strA7 = [NSString |
261 | stringWithCharacters:myCharacters |
262 | length:sizeof myCharacters / sizeof *myCharacters]; |
263 | |
264 | NSString *strA8 = |
265 | [@"/usr/doc/" |
266 | @"file." |
267 | @"hasVeryLongExtensionThisTimehasVeryLongExtensionThisTimehasVeryLongExt" |
268 | @"ensionThisTimehasVeryLongExtensionThisTimehasVeryLongExtensionThisTime" |
269 | @"hasVeryLongExtensionThisTimehasVeryLongExtensionThisTimehasVeryLongExt" |
270 | @"ensionThisTimehasVeryLongExtensionThisTimehasVeryLongExtensionThisTime" |
271 | @"hasVeryLongExtensionThisTimehasVeryLongExtensionThisTimehasVeryLongExt" |
272 | @"ensionThisTimehasVeryLongExtensionThisTimehasVeryLongExtensionThisTime" |
273 | @"hasVeryLongExtensionThisTimehasVeryLongExtensionThisTimehasVeryLongExt" |
274 | @"ensionThisTimehasVeryLongExtensionThisTimehasVeryLongExtensionThisTime" |
275 | @"hasVeryLongExtensionThisTimehasVeryLongExtensionThisTimehasVeryLongExt" |
276 | @"ensionThisTimehasVeryLongExtensionThisTimehasVeryLongExtensionThisTime" |
277 | @"hasVeryLongExtensionThisTimehasVeryLongExtensionThisTimehasVeryLongExt" |
278 | @"ensionThisTime" pathExtension]; |
279 | |
280 | NSString *strA9 = [NSString stringWithCharacters:myOtherCharacters |
281 | length:sizeof myOtherCharacters / |
282 | sizeof *myOtherCharacters]; |
283 | |
284 | NSString *strA10 = [NSString |
285 | stringWithFormat:@"This is a Unicode string %S number %ld right here" , |
286 | myNextCharacters, (long)4]; |
287 | |
288 | NSString *strA11 = NSStringFromClass([str10 class]); |
289 | |
290 | NSString *strA12 = [NSString |
291 | stringWithFormat:@"%@ %@ %@ %@" , label1, processName, label2, processID]; |
292 | |
293 | NSString *strB1 = |
294 | [NSString stringWithCString:"A rather short ASCII NSString object is here" |
295 | encoding:NSASCIIStringEncoding]; |
296 | |
297 | NSString *strB2 = [NSString |
298 | stringWithUTF8String:"A rather short UTF8 NSString object is here" ]; |
299 | |
300 | NSString *strB3 = @"A string made with the at sign is here" ; |
301 | |
302 | NSString *strB4 = [NSString |
303 | stringWithFormat:@"This is string number %ld right here" , (long)4]; |
304 | |
305 | NSString *strB5 = NSStringFromRect(ns_rect_4str); |
306 | |
307 | NSString *strB6 = [@"/usr/doc/README.1ST" pathExtension]; |
308 | |
309 | NSString *strB7 = [NSString |
310 | stringWithCharacters:myCharacters |
311 | length:sizeof myCharacters / sizeof *myCharacters]; |
312 | |
313 | NSString *strB8 = |
314 | [@"/usr/doc/" |
315 | @"file." |
316 | @"hasVeryLongExtensionThisTimehasVeryLongExtensionThisTimehasVeryLongExt" |
317 | @"ensionThisTimehasVeryLongExtensionThisTimehasVeryLongExtensionThisTime" |
318 | @"hasVeryLongExtensionThisTimehasVeryLongExtensionThisTimehasVeryLongExt" |
319 | @"ensionThisTimehasVeryLongExtensionThisTimehasVeryLongExtensionThisTime" |
320 | @"hasVeryLongExtensionThisTimehasVeryLongExtensionThisTimehasVeryLongExt" |
321 | @"ensionThisTimehasVeryLongExtensionThisTimehasVeryLongExtensionThisTime" |
322 | @"hasVeryLongExtensionThisTimehasVeryLongExtensionThisTimehasVeryLongExt" |
323 | @"ensionThisTimehasVeryLongExtensionThisTimehasVeryLongExtensionThisTime" |
324 | @"hasVeryLongExtensionThisTimehasVeryLongExtensionThisTimehasVeryLongExt" |
325 | @"ensionThisTimehasVeryLongExtensionThisTimehasVeryLongExtensionThisTime" |
326 | @"hasVeryLongExtensionThisTimehasVeryLongExtensionThisTimehasVeryLongExt" |
327 | @"ensionThisTime" pathExtension]; |
328 | |
329 | NSString *strB9 = [NSString stringWithCharacters:myOtherCharacters |
330 | length:sizeof myOtherCharacters / |
331 | sizeof *myOtherCharacters]; |
332 | |
333 | NSString *strB10 = [NSString |
334 | stringWithFormat:@"This is a Unicode string %S number %ld right here" , |
335 | myNextCharacters, (long)4]; |
336 | |
337 | NSString *strB11 = NSStringFromClass([str10 class]); |
338 | |
339 | NSString *strB12 = [NSString |
340 | stringWithFormat:@"%@ %@ %@ %@" , label1, processName, label2, processID]; |
341 | |
342 | NSString *strC11 = NSStringFromClass([str10 class]); |
343 | |
344 | NSString *strC12 = [NSString |
345 | stringWithFormat:@"%@ %@ %@ %@" , label1, processName, label2, processID]; |
346 | |
347 | NSString *strC1 = |
348 | [NSString stringWithCString:"A rather short ASCII NSString object is here" |
349 | encoding:NSASCIIStringEncoding]; |
350 | |
351 | NSString *strC2 = [NSString |
352 | stringWithUTF8String:"A rather short UTF8 NSString object is here" ]; |
353 | |
354 | NSString *strC3 = @"A string made with the at sign is here" ; |
355 | |
356 | NSString *strC4 = [NSString |
357 | stringWithFormat:@"This is string number %ld right here" , (long)4]; |
358 | |
359 | NSString *strC5 = NSStringFromRect(ns_rect_4str); |
360 | |
361 | NSString *strC6 = [@"/usr/doc/README.1ST" pathExtension]; |
362 | |
363 | NSString *strC7 = [NSString |
364 | stringWithCharacters:myCharacters |
365 | length:sizeof myCharacters / sizeof *myCharacters]; |
366 | |
367 | NSString *strC8 = |
368 | [@"/usr/doc/" |
369 | @"file." |
370 | @"hasVeryLongExtensionThisTimehasVeryLongExtensionThisTimehasVeryLongExt" |
371 | @"ensionThisTimehasVeryLongExtensionThisTimehasVeryLongExtensionThisTime" |
372 | @"hasVeryLongExtensionThisTimehasVeryLongExtensionThisTimehasVeryLongExt" |
373 | @"ensionThisTimehasVeryLongExtensionThisTimehasVeryLongExtensionThisTime" |
374 | @"hasVeryLongExtensionThisTimehasVeryLongExtensionThisTimehasVeryLongExt" |
375 | @"ensionThisTimehasVeryLongExtensionThisTimehasVeryLongExtensionThisTime" |
376 | @"hasVeryLongExtensionThisTimehasVeryLongExtensionThisTimehasVeryLongExt" |
377 | @"ensionThisTimehasVeryLongExtensionThisTimehasVeryLongExtensionThisTime" |
378 | @"hasVeryLongExtensionThisTimehasVeryLongExtensionThisTimehasVeryLongExt" |
379 | @"ensionThisTimehasVeryLongExtensionThisTimehasVeryLongExtensionThisTime" |
380 | @"hasVeryLongExtensionThisTimehasVeryLongExtensionThisTimehasVeryLongExt" |
381 | @"ensionThisTime" pathExtension]; |
382 | |
383 | NSString *strC9 = [NSString stringWithCharacters:myOtherCharacters |
384 | length:sizeof myOtherCharacters / |
385 | sizeof *myOtherCharacters]; |
386 | |
387 | NSString *strC10 = [NSString |
388 | stringWithFormat:@"This is a Unicode string %S number %ld right here" , |
389 | myNextCharacters, (long)4]; |
390 | |
391 | NSString *strD11 = NSStringFromClass([str10 class]); |
392 | |
393 | NSString *strD12 = [NSString |
394 | stringWithFormat:@"%@ %@ %@ %@" , label1, processName, label2, processID]; |
395 | |
396 | NSString *eAcute = [NSString stringWithFormat:@"%C" , 0x00E9]; |
397 | NSString *randomHaziChar = [NSString stringWithFormat:@"%C" , 0x9DC5]; |
398 | NSString *japanese = @"色は匂へど散りぬるを" ; |
399 | NSString *italian = @"L'Italia è una Repubblica democratica, fondata sul " |
400 | @"lavoro. La sovranità appartiene al popolo, che la " |
401 | @"esercita nelle forme e nei limiti della Costituzione." ; |
402 | NSString *french = |
403 | @"Que veut cette horde d'esclaves, De traîtres, de rois conjurés?" ; |
404 | NSString *german = @"Über-Ich und aus den Ansprüchen der sozialen Umwelt" ; |
405 | |
406 | void *data_set[3] = {str1, str2, str3}; |
407 | |
408 | NSString *hebrew = [NSString stringWithString:@"לילה טוב" ]; |
409 | |
410 | NSArray *newArray = [[NSMutableArray alloc] init]; |
411 | [newArray addObject:str1]; |
412 | [newArray addObject:str2]; |
413 | [newArray addObject:str3]; |
414 | [newArray addObject:str4]; |
415 | [newArray addObject:str5]; |
416 | [newArray addObject:str6]; |
417 | [newArray addObject:str7]; |
418 | [newArray addObject:str8]; |
419 | [newArray addObject:str9]; |
420 | [newArray addObject:str10]; |
421 | [newArray addObject:str11]; |
422 | [newArray addObject:str12]; |
423 | [newArray addObject:strA1]; |
424 | [newArray addObject:strA2]; |
425 | [newArray addObject:strA3]; |
426 | [newArray addObject:strA4]; |
427 | [newArray addObject:strA5]; |
428 | [newArray addObject:strA6]; |
429 | [newArray addObject:strA7]; |
430 | [newArray addObject:strA8]; |
431 | [newArray addObject:strA9]; |
432 | [newArray addObject:strA10]; |
433 | [newArray addObject:strA11]; |
434 | [newArray addObject:strA12]; |
435 | [newArray addObject:strB1]; |
436 | [newArray addObject:strB2]; |
437 | [newArray addObject:strB3]; |
438 | [newArray addObject:strB4]; |
439 | [newArray addObject:strB5]; |
440 | [newArray addObject:strB6]; |
441 | [newArray addObject:strB7]; |
442 | [newArray addObject:strB8]; |
443 | [newArray addObject:strB9]; |
444 | [newArray addObject:strB10]; |
445 | [newArray addObject:strB11]; |
446 | [newArray addObject:strB12]; |
447 | [newArray addObject:strC1]; |
448 | [newArray addObject:strC2]; |
449 | [newArray addObject:strC3]; |
450 | [newArray addObject:strC4]; |
451 | [newArray addObject:strC5]; |
452 | [newArray addObject:strC6]; |
453 | [newArray addObject:strC7]; |
454 | [newArray addObject:strC8]; |
455 | [newArray addObject:strC9]; |
456 | [newArray addObject:strC10]; |
457 | [newArray addObject:strC11]; |
458 | [newArray addObject:strC12]; |
459 | [newArray addObject:strD11]; |
460 | [newArray addObject:strD12]; |
461 | |
462 | NSDictionary *newDictionary = [[NSDictionary alloc] initWithObjects:newArray |
463 | forKeys:newArray]; |
464 | NSDictionary *newMutableDictionary = [[NSMutableDictionary alloc] init]; |
465 | [newMutableDictionary setObject:@"foo" forKey:@"bar0" ]; |
466 | [newMutableDictionary setObject:@"foo" forKey:@"bar1" ]; |
467 | [newMutableDictionary setObject:@"foo" forKey:@"bar2" ]; |
468 | [newMutableDictionary setObject:@"foo" forKey:@"bar3" ]; |
469 | [newMutableDictionary setObject:@"foo" forKey:@"bar4" ]; |
470 | [newMutableDictionary setObject:@"foo" forKey:@"bar5" ]; |
471 | [newMutableDictionary setObject:@"foo" forKey:@"bar6" ]; |
472 | [newMutableDictionary setObject:@"foo" forKey:@"bar7" ]; |
473 | [newMutableDictionary setObject:@"foo" forKey:@"bar8" ]; |
474 | [newMutableDictionary setObject:@"foo" forKey:@"bar9" ]; |
475 | [newMutableDictionary setObject:@"foo" forKey:@"bar10" ]; |
476 | [newMutableDictionary setObject:@"foo" forKey:@"bar11" ]; |
477 | [newMutableDictionary setObject:@"foo" forKey:@"bar12" ]; |
478 | [newMutableDictionary setObject:@"foo" forKey:@"bar13" ]; |
479 | [newMutableDictionary setObject:@"foo" forKey:@"bar14" ]; |
480 | [newMutableDictionary setObject:@"foo" forKey:@"bar15" ]; |
481 | [newMutableDictionary setObject:@"foo" forKey:@"bar16" ]; |
482 | [newMutableDictionary setObject:@"foo" forKey:@"bar17" ]; |
483 | [newMutableDictionary setObject:@"foo" forKey:@"bar18" ]; |
484 | [newMutableDictionary setObject:@"foo" forKey:@"bar19" ]; |
485 | [newMutableDictionary setObject:@"foo" forKey:@"bar20" ]; |
486 | |
487 | /* Copying an NSMutableDictionary makes a different member of the |
488 | class cluster, so let's also make a copy of this one: */ |
489 | NSMutableDictionary *copyDictionary = [newMutableDictionary copy]; |
490 | |
491 | CFMutableDictionaryRef newMutableDictionaryRef = CFDictionaryCreateMutableCopy(kCFAllocatorDefault, 0, newMutableDictionary); |
492 | |
493 | id cfKeys[4] = {@"foo" , @"bar" , @"baz" , @"quux" }; |
494 | id cfValues[4] = {@"foo" , @"bar" , @"baz" , @"quux" }; |
495 | NSDictionary *nsDictionary = CFBridgingRelease( |
496 | CFDictionaryCreate(nil, (void *)cfKeys, (void *)cfValues, 2, nil, nil)); |
497 | NSDictionary *nscfDictionary = CFBridgingRelease( |
498 | CFDictionaryCreate(nil, (void *)cfKeys, (void *)cfValues, 4, nil, nil)); |
499 | CFDictionaryRef cfDictionaryRef = (__bridge CFDictionaryRef)nsDictionary; |
500 | |
501 | NSAttributedString *attrString = |
502 | [[NSAttributedString alloc] initWithString:@"hello world from foo" |
503 | attributes:newDictionary]; |
504 | [attrString isEqual:nil]; |
505 | NSAttributedString *mutableAttrString = |
506 | [[NSMutableAttributedString alloc] initWithString:@"hello world from foo" |
507 | attributes:newDictionary]; |
508 | [mutableAttrString isEqual:nil]; |
509 | |
510 | NSString *mutableString = [[NSMutableString alloc] initWithString:@"foo" ]; |
511 | [mutableString |
512 | insertString: |
513 | @"foo said this string needs to be very long so much longer than " |
514 | @"whatever other string has been seen ever before by anyone of the " |
515 | @"mankind that of course this is still not long enough given what " |
516 | @"foo our friend foo our lovely dearly friend foo desired of us so i " |
517 | @"am adding more stuff here for the sake of it and for the joy of " |
518 | @"our friend who is named guess what just foo. hence, dear friend " |
519 | @"foo, stay safe, your string is now long enough to accommodate " |
520 | @"your testing need and I will make sure that if not we extend it " |
521 | @"with even more fuzzy random meaningless words pasted one after the " |
522 | @"other from a long tiresome friday evening spent working in my " |
523 | @"office. my office mate went home but I am still randomly typing " |
524 | @"just for the fun of seeing what happens of the length of a Mutable " |
525 | @"String in Cocoa if it goes beyond one byte.. so be it, dear " |
526 | atIndex:0]; |
527 | |
528 | NSString *mutableGetConst = |
529 | [NSString stringWithCString:[mutableString cString]]; |
530 | |
531 | [mutableGetConst length]; |
532 | |
533 | NSData *immutableData = [[NSData alloc] initWithBytes:"HELLO" length:5]; |
534 | NSData *mutableData = [[NSMutableData alloc] initWithBytes:"NODATA" length:6]; |
535 | |
536 | // No-copy versions of NSData initializers use NSConcreteData if over 2^16 |
537 | // elements are specified. |
538 | unsigned concreteLength = 100000; |
539 | void *zeroes1 = calloc(1, concreteLength); |
540 | // initWithBytesNoCopy takes ownership of the buffer. |
541 | NSData *concreteData = [[NSData alloc] initWithBytesNoCopy:zeroes1 |
542 | length:concreteLength]; |
543 | void *zeroes2 = calloc(1, concreteLength); |
544 | NSMutableData *concreteMutableData = |
545 | [[NSMutableData alloc] initWithBytesNoCopy:zeroes2 length:concreteLength]; |
546 | |
547 | [mutableData appendBytes:"MOREDATA" length:8]; |
548 | |
549 | [immutableData length]; |
550 | [mutableData length]; |
551 | |
552 | NSSet *nsset = [[NSSet alloc] initWithObjects:str1, str2, str3, nil]; |
553 | NSSet *nsmutableset = |
554 | [[NSMutableSet alloc] initWithObjects:str1, str2, str3, nil]; |
555 | [nsmutableset addObject:str4]; |
556 | NSSet *nscfSet = |
557 | CFBridgingRelease(CFSetCreate(nil, (void *)cfValues, 2, nil)); |
558 | CFSetRef cfSetRef = (__bridge CFSetRef)nscfSet; |
559 | |
560 | CFDataRef data_ref = |
561 | CFDataCreate(kCFAllocatorDefault, [immutableData bytes], 5); |
562 | |
563 | CFMutableDataRef mutable_data_ref = |
564 | CFDataCreateMutable(kCFAllocatorDefault, 8); |
565 | CFDataAppendBytes(mutable_data_ref, [mutableData bytes], 5); |
566 | |
567 | CFMutableStringRef mutable_string_ref = CFStringCreateMutable(NULL, 100); |
568 | CFStringAppend(mutable_string_ref, CFSTR("Wish ya knew" )); |
569 | |
570 | CFStringRef cfstring_ref = CFSTR("HELLO WORLD" ); |
571 | |
572 | CFArrayRef cfarray_ref = CFArrayCreate(NULL, data_set, 3, NULL); |
573 | CFMutableArrayRef mutable_array_ref = CFArrayCreateMutable(NULL, 16, NULL); |
574 | |
575 | CFArraySetValueAtIndex(mutable_array_ref, 0, str1); |
576 | CFArraySetValueAtIndex(mutable_array_ref, 1, str2); |
577 | CFArraySetValueAtIndex(mutable_array_ref, 2, str3); |
578 | CFArraySetValueAtIndex(mutable_array_ref, 3, str4); |
579 | CFArraySetValueAtIndex(mutable_array_ref, 0, str5); // replacing value at 0!! |
580 | CFArraySetValueAtIndex(mutable_array_ref, 4, str6); |
581 | CFArraySetValueAtIndex(mutable_array_ref, 5, str7); |
582 | CFArraySetValueAtIndex(mutable_array_ref, 6, str8); |
583 | CFArraySetValueAtIndex(mutable_array_ref, 7, str9); |
584 | CFArraySetValueAtIndex(mutable_array_ref, 8, str10); |
585 | CFArraySetValueAtIndex(mutable_array_ref, 9, str11); |
586 | CFArraySetValueAtIndex(mutable_array_ref, 10, str12); |
587 | |
588 | CFBinaryHeapRef binheap_ref = |
589 | CFBinaryHeapCreate(NULL, 15, &kCFStringBinaryHeapCallBacks, NULL); |
590 | CFBinaryHeapAddValue(binheap_ref, str1); |
591 | CFBinaryHeapAddValue(binheap_ref, str2); |
592 | CFBinaryHeapAddValue(binheap_ref, str3); |
593 | CFBinaryHeapAddValue(binheap_ref, str4); |
594 | CFBinaryHeapAddValue(binheap_ref, str5); |
595 | CFBinaryHeapAddValue(binheap_ref, str6); |
596 | CFBinaryHeapAddValue(binheap_ref, str7); |
597 | CFBinaryHeapAddValue(binheap_ref, str8); |
598 | CFBinaryHeapAddValue(binheap_ref, str9); |
599 | CFBinaryHeapAddValue(binheap_ref, str10); |
600 | CFBinaryHeapAddValue(binheap_ref, str11); |
601 | CFBinaryHeapAddValue(binheap_ref, str12); |
602 | CFBinaryHeapAddValue(binheap_ref, strA1); |
603 | CFBinaryHeapAddValue(binheap_ref, strB1); |
604 | CFBinaryHeapAddValue(binheap_ref, strC1); |
605 | CFBinaryHeapAddValue(binheap_ref, strA11); |
606 | CFBinaryHeapAddValue(binheap_ref, strB11); |
607 | CFBinaryHeapAddValue(binheap_ref, strC11); |
608 | CFBinaryHeapAddValue(binheap_ref, strB12); |
609 | CFBinaryHeapAddValue(binheap_ref, strC12); |
610 | CFBinaryHeapAddValue(binheap_ref, strA12); |
611 | |
612 | CFURLRef cfurl_ref = |
613 | CFURLCreateWithString(NULL, CFSTR("http://www.foo.bar/" ), NULL); |
614 | CFURLRef cfchildurl_ref = |
615 | CFURLCreateWithString(NULL, CFSTR("page.html" ), cfurl_ref); |
616 | CFURLRef cfgchildurl_ref = |
617 | CFURLCreateWithString(NULL, CFSTR("?whatever" ), cfchildurl_ref); |
618 | |
619 | NSDictionary *error_userInfo = @{@"a" : @1, @"b" : @2}; |
620 | NSError *nserror = [[NSError alloc] initWithDomain:@"Foobar" |
621 | code:12 |
622 | userInfo:error_userInfo]; |
623 | NSError **nserrorptr = &nserror; |
624 | |
625 | NSBundle *bundle_string = [[NSBundle alloc] |
626 | initWithPath:@"/System/Library/Frameworks/Accelerate.framework" ]; |
627 | NSBundle *bundle_url = [[NSBundle alloc] |
628 | initWithURL:[[NSURL alloc] |
629 | initWithString:@"file://localhost/System/Library/" |
630 | @"Frameworks/Foundation.framework" ]]; |
631 | |
632 | NSBundle *main_bundle = [NSBundle mainBundle]; |
633 | |
634 | NSArray *bundles = [NSBundle allBundles]; |
635 | |
636 | NSURL *nsurl0; |
637 | |
638 | for (NSBundle *bundle in bundles) { |
639 | nsurl0 = [bundle bundleURL]; |
640 | } |
641 | |
642 | NSException *except0 = [[NSException alloc] initWithName:@"TheGuyWhoHasNoName" |
643 | reason:@"First" |
644 | userInfo:nil]; |
645 | NSException *except1 = |
646 | [[NSException alloc] initWithName:@"TheGuyWhoHasNoName~1" |
647 | reason:@"Second" |
648 | userInfo:nil]; |
649 | NSException *except2 = |
650 | [[NSException alloc] initWithName:@"TheGuyWhoHasNoName`2" |
651 | reason:@"Third" |
652 | userInfo:nil]; |
653 | NSException *except3 = |
654 | [[NSException alloc] initWithName:@"TheGuyWhoHasNoName/3" |
655 | reason:@"Fourth" |
656 | userInfo:nil]; |
657 | |
658 | NSURL *nsurl = [[NSURL alloc] initWithString:@"http://www.foo.bar" ]; |
659 | NSURL *nsurl2 = [NSURL URLWithString:@"page.html" relativeToURL:nsurl]; |
660 | NSURL *nsurl3 = [NSURL URLWithString:@"?whatever" relativeToURL:nsurl2]; |
661 | |
662 | NSDate *date1 = [NSDate |
663 | dateWithTimeIntervalSince1970:133890 * 60 * 60]; // 6pm April 10, 1985 GMT |
664 | NSDate *date2 = |
665 | [NSDate dateWithNaturalLanguageString:@"12am January 1, 2011" ]; |
666 | NSDate *date3 = [NSDate date]; |
667 | NSDate *date4 = [NSDate dateWithTimeIntervalSince1970:24 * 60 * 60]; |
668 | NSDate *date5 = |
669 | [NSDate dateWithTimeIntervalSinceReferenceDate: |
670 | floor([[NSDate date] timeIntervalSinceReferenceDate])]; |
671 | |
672 | NSDate *date_1970_minus_06 = [NSDate dateWithTimeIntervalSince1970:-0.6]; |
673 | NSDate *date_1970_minus_05 = [NSDate dateWithTimeIntervalSince1970:-0.5]; |
674 | NSDate *date_1970_minus_04 = [NSDate dateWithTimeIntervalSince1970:-0.4]; |
675 | |
676 | NSDate *date_1970_plus_06 = [NSDate dateWithTimeIntervalSince1970:0.6]; |
677 | NSDate *date_1970_plus_05 = [NSDate dateWithTimeIntervalSince1970:0.5]; |
678 | NSDate *date_1970_plus_04 = [NSDate dateWithTimeIntervalSince1970:0.4]; |
679 | |
680 | NSDate *distant_past = [NSDate distantPast]; |
681 | NSDate *distant_future = [NSDate distantFuture]; |
682 | |
683 | CFAbsoluteTime date1_abs = CFDateGetAbsoluteTime(date1); |
684 | CFAbsoluteTime date2_abs = CFDateGetAbsoluteTime(date2); |
685 | CFAbsoluteTime date3_abs = CFDateGetAbsoluteTime(date3); |
686 | CFAbsoluteTime date4_abs = CFDateGetAbsoluteTime(date4); |
687 | CFAbsoluteTime date5_abs = CFDateGetAbsoluteTime(date5); |
688 | |
689 | NSIndexSet *iset1 = |
690 | [[NSIndexSet alloc] initWithIndexesInRange:NSMakeRange(1, 4)]; |
691 | NSIndexSet *iset2 = |
692 | [[NSIndexSet alloc] initWithIndexesInRange:NSMakeRange(1, 512)]; |
693 | |
694 | NSMutableIndexSet *imset = [[NSMutableIndexSet alloc] init]; |
695 | [imset addIndex:1936]; |
696 | [imset addIndex:7]; |
697 | [imset addIndex:9]; |
698 | [imset addIndex:11]; |
699 | [imset addIndex:24]; |
700 | [imset addIndex:41]; |
701 | [imset addIndex:58]; |
702 | [imset addIndex:61]; |
703 | [imset addIndex:62]; |
704 | [imset addIndex:63]; |
705 | |
706 | CFTimeZoneRef cupertino = CFTimeZoneCreateWithName(NULL, CFSTR("PST" ), YES); |
707 | CFTimeZoneRef home = |
708 | CFTimeZoneCreateWithName(NULL, CFSTR("Europe/Rome" ), YES); |
709 | CFTimeZoneRef europe = CFTimeZoneCreateWithName(NULL, CFSTR("CET" ), YES); |
710 | |
711 | NSTimeZone *cupertino_ns = [NSTimeZone timeZoneWithAbbreviation:@"PST" ]; |
712 | NSTimeZone *home_ns = [NSTimeZone timeZoneWithName:@"Europe/Rome" ]; |
713 | NSTimeZone *europe_ns = [NSTimeZone timeZoneWithAbbreviation:@"CET" ]; |
714 | |
715 | CFGregorianUnits cf_greg_units = {1, 3, 5, 12, 5, 7}; |
716 | CFGregorianDate cf_greg_date = |
717 | CFAbsoluteTimeGetGregorianDate(CFDateGetAbsoluteTime(date1), NULL); |
718 | CFRange cf_range = {4, 4}; |
719 | NSPoint ns_point = {4, 4}; |
720 | NSRange ns_range = {4, 4}; |
721 | |
722 | NSRect ns_rect = {{1, 1}, {5, 5}}; |
723 | NSRect *ns_rect_ptr = &ns_rect; |
724 | NSRectArray ns_rect_arr = &ns_rect; |
725 | NSSize ns_size = {5, 7}; |
726 | NSSize *ns_size_ptr = &ns_size; |
727 | |
728 | CGSize cg_size = {1, 6}; |
729 | CGPoint cg_point = {2, 7}; |
730 | CGRect cg_rect = {{1, 2}, {7, 7}}; |
731 | |
732 | #ifndef IOS |
733 | RGBColor rgb_color = {3, 56, 35}; |
734 | RGBColor *rgb_color_ptr = &rgb_color; |
735 | #endif |
736 | |
737 | Rect rect = {4, 8, 4, 7}; |
738 | Rect *rect_ptr = ▭ |
739 | |
740 | Point point = {7, 12}; |
741 | Point *point_ptr = &point; |
742 | |
743 | #ifndef IOS |
744 | HIPoint hi_point = {7, 12}; |
745 | HIRect hi_rect = {{3, 5}, {4, 6}}; |
746 | #endif |
747 | |
748 | SEL foo_selector = @selector(foo_selector_impl); |
749 | |
750 | CFMutableBitVectorRef mut_bv = CFBitVectorCreateMutable(NULL, 64); |
751 | CFBitVectorSetCount(mut_bv, 50); |
752 | CFBitVectorSetBitAtIndex(mut_bv, 0, 1); |
753 | CFBitVectorSetBitAtIndex(mut_bv, 1, 1); |
754 | CFBitVectorSetBitAtIndex(mut_bv, 2, 1); |
755 | CFBitVectorSetBitAtIndex(mut_bv, 5, 1); |
756 | CFBitVectorSetBitAtIndex(mut_bv, 6, 1); |
757 | CFBitVectorSetBitAtIndex(mut_bv, 8, 1); |
758 | CFBitVectorSetBitAtIndex(mut_bv, 10, 1); |
759 | CFBitVectorSetBitAtIndex(mut_bv, 11, 1); |
760 | CFBitVectorSetBitAtIndex(mut_bv, 16, 1); |
761 | CFBitVectorSetBitAtIndex(mut_bv, 17, 1); |
762 | CFBitVectorSetBitAtIndex(mut_bv, 19, 1); |
763 | CFBitVectorSetBitAtIndex(mut_bv, 20, 1); |
764 | CFBitVectorSetBitAtIndex(mut_bv, 22, 1); |
765 | CFBitVectorSetBitAtIndex(mut_bv, 24, 1); |
766 | CFBitVectorSetBitAtIndex(mut_bv, 28, 1); |
767 | CFBitVectorSetBitAtIndex(mut_bv, 29, 1); |
768 | CFBitVectorSetBitAtIndex(mut_bv, 30, 1); |
769 | CFBitVectorSetBitAtIndex(mut_bv, 30, 1); |
770 | CFBitVectorSetBitAtIndex(mut_bv, 31, 1); |
771 | CFBitVectorSetBitAtIndex(mut_bv, 34, 1); |
772 | CFBitVectorSetBitAtIndex(mut_bv, 35, 1); |
773 | CFBitVectorSetBitAtIndex(mut_bv, 37, 1); |
774 | CFBitVectorSetBitAtIndex(mut_bv, 39, 1); |
775 | CFBitVectorSetBitAtIndex(mut_bv, 40, 1); |
776 | CFBitVectorSetBitAtIndex(mut_bv, 41, 1); |
777 | CFBitVectorSetBitAtIndex(mut_bv, 43, 1); |
778 | CFBitVectorSetBitAtIndex(mut_bv, 47, 1); |
779 | |
780 | Molecule *molecule = [Molecule new]; |
781 | |
782 | Class myclass = NSClassFromString(@"NSValue" ); |
783 | Class myclass2 = [str0 class]; |
784 | Class myclass3 = [molecule class]; |
785 | Class myclass4 = NSClassFromString(@"NSMutableArray" ); |
786 | Class myclass5 = [nil class]; |
787 | |
788 | NSArray *components = @[ @"usr" , @"blah" , @"stuff" ]; |
789 | NSString *path = [NSString pathWithComponents:components]; |
790 | |
791 | [molecule addObserver:[My_KVO_Observer new] |
792 | forKeyPath:@"atoms" |
793 | options:0 |
794 | context:NULL]; // Set break point at this line. |
795 | [newMutableDictionary addObserver:[My_KVO_Observer new] |
796 | forKeyPath:@"weirdKeyToKVO" |
797 | options:NSKeyValueObservingOptionNew |
798 | context:NULL]; |
799 | |
800 | [molecule setAtoms:nil]; |
801 | [molecule setAtoms:[NSMutableArray new]]; |
802 | |
803 | [pool drain]; |
804 | return 0; |
805 | } |
806 | |