[問題] 程式碼問題 有關NSSet

作者: dreambegins (⊙_⊙)   2019-05-01 15:14:19
不好意思直接貼上 上色過程太麻煩可怕了
如果可以麻煩大大也直接複製貼上到編輯器跑結果
我的第二個問題是結果無法理解
#import <Foundation/Foundation.h>
// Create an integer object
#define INTOBJ(v) [NSNumber numberWithInteger: v]
// Add a print method to NSSet with the Printing category
@interface NSSet (Printing)<=====我想問的第一個問題,括號這個是什麼?
-(void) print;
@end
@implementation NSSet (Printing)
-(void) print {
printf ("{ ");
for (NSNumber *element in self)
printf (" %li ", (long) [element integerValue]);
printf ("} \n"); }
@end
int main (int argc, char * argv[]) {
@autoreleasepool {
NSMutableSet *set1 = [NSMutableSet setWithObjects:
INTOBJ(1), INTOBJ(3), INTOBJ(5), INTOBJ(10), nil];
NSSet *set2 = [NSSet setWithObjects:
INTOBJ(-5), INTOBJ(100), INTOBJ(3), INTOBJ(5), nil];
NSSet *set3 = [NSSet setWithObjects: INTOBJ(12), INTOBJ(200), INTOBJ(3), nil];
NSLog(@"set1: ");
[set1 print];<=====我想問的第三個問題
NSLog(@"set2: ");
[set2 print];
// Equality test
if ([set1 isEqualToSet: set2] == YES)
NSLog (@"set1 equals set2");
else
NSLog (@"set1 is not equal to set2");
// Membership test
if ([set1 containsObject: INTOBJ(10)] == YES)
NSLog (@"set1 contains 10");
else
NSLog (@"set1 does not contain 10");
if ([set2 containsObject: INTOBJ(10)] == YES)
NSLog (@"set2 contains 10");
else
NSLog (@"set2 does not contain 10");
// add and remove objects from mutable set set1
[set1 addObject: INTOBJ(4)];
[set1 removeObject: INTOBJ(10)];
NSLog (@"set1 after adding 4 and removing 10: ");
[set1 print];
// get intersection of two sets
[set1 intersectSet: set2];
NSLog (@"set1 intersect set2: ");
[set1 print];
// union of two sets
[set1 unionSet:set3];
NSLog (@"set1 union set3: ");
[set1 print]; <=====我想問的第二個問題
}
return 0;
}
這本書是精通Obj C...作者提供的討論區已經404 not found了...QQ 所以上來求救
第一個問題:(printing) 的寫法是什麼意思?書本上根本就沒交代清楚
第二個問題:書上寫的結果是
set1 union set3:
{ 12 3 5 200 }
我覺得很奇怪,union的數學意義不是聯集嗎?為什麼結果不是{ 1 3 4 5 12 200 }?
第三個問題:為什麼印出這些元素的時候沒按照順序啊?本來就隨便排序的嗎?
以上 麻煩大大 謝謝!

Links booklink

Contact Us: admin [ a t ] ucptt.com