From 5d5f3309faf8c6cf0bb5242ea7220e4ae772d6a3 Mon Sep 17 00:00:00 2001 From: Levi Bostian Date: Sat, 21 Dec 2013 17:37:19 -0600 Subject: Add more description to @property getters and setters. --- objective-c.html.markdown | 3 +++ 1 file changed, 3 insertions(+) diff --git a/objective-c.html.markdown b/objective-c.html.markdown index 1ed0ed58..0a197e03 100644 --- a/objective-c.html.markdown +++ b/objective-c.html.markdown @@ -233,6 +233,9 @@ int main (int argc, const char * argv[]) @property int count; @property (copy) NSString *name; // Copy the object during assignment. @property (readonly) id data; // Declare only a getter method. +// To access variable in implementation file, use '_' followed by variable name: +_count = 5; +NSLog("%@", _count); // => prints 5 to console // Methods +/- (return type)methodSignature:(Parameter Type *)parameterName; -- cgit v1.2.3 From 643a3ec67bb5d7b453b4a4d59bbb8b254eccb0db Mon Sep 17 00:00:00 2001 From: Levi Bostian Date: Sat, 21 Dec 2013 17:37:19 -0600 Subject: Add getters and setters examples. --- objective-c.html.markdown | 8 ++++++-- 1 file changed, 6 insertions(+), 2 deletions(-) diff --git a/objective-c.html.markdown b/objective-c.html.markdown index 0a197e03..1cfe8ed6 100644 --- a/objective-c.html.markdown +++ b/objective-c.html.markdown @@ -233,9 +233,13 @@ int main (int argc, const char * argv[]) @property int count; @property (copy) NSString *name; // Copy the object during assignment. @property (readonly) id data; // Declare only a getter method. -// To access variable in implementation file, use '_' followed by variable name: +// To access public variable in implementation file, use '_' followed by variable name: _count = 5; -NSLog("%@", _count); // => prints 5 to console +NSLog(@"%d", _count); // prints => 5 +// To access public variable outside implementation file, @property generates setter method +// automatically. Method name is 'set' followed by @property variable name: +[objInitVar setCount:10]; // objInitVar = variable of object instance @property resides in. +NSLog(@"%@", [objInitVar count]); // prints => 10 // Methods +/- (return type)methodSignature:(Parameter Type *)parameterName; -- cgit v1.2.3 From 0b73244aa3c53d51a7031a04a6cb7f85895af101 Mon Sep 17 00:00:00 2001 From: Levi Bostian Date: Sun, 22 Dec 2013 10:37:02 -0600 Subject: Add data types with examples. --- objective-c.html.markdown | 58 +++++++++++++++++++++++++++++++++++++++-------- 1 file changed, 49 insertions(+), 9 deletions(-) diff --git a/objective-c.html.markdown b/objective-c.html.markdown index 1cfe8ed6..0131a34c 100644 --- a/objective-c.html.markdown +++ b/objective-c.html.markdown @@ -50,53 +50,93 @@ int main (int argc, const char * argv[]) // String NSString *worldString = @"World"; - NSLog(@"Hello %@!", worldString); // Print "Hello World!" + NSLog(@"Hello %@!", worldString); // prints => "Hello World!" + // The mutable version of NSString is NSMutableString that allows to edit + // individual characters or append strings together. + NSMutableString *mutableString = [NSMutableString stringWithString:@"Hello"]; + [mutableString appendString:@" World!"]; + NSLog(@"%@", mutableString); // prints => "Hello World!" // Character literals NSNumber *theLetterZNumber = @'Z'; - char theLetterZ = [theLetterZNumber charValue]; + char theLetterZ = [theLetterZNumber charValue]; // or 'Z' NSLog(@"%c", theLetterZ); // Integral literals NSNumber *fortyTwoNumber = @42; - int fortyTwo = [fortyTwoNumber intValue]; + int fortyTwo = [fortyTwoNumber intValue]; // or 42 NSLog(@"%i", fortyTwo); NSNumber *fortyTwoUnsignedNumber = @42U; - unsigned int fortyTwoUnsigned = [fortyTwoUnsignedNumber unsignedIntValue]; + unsigned int fortyTwoUnsigned = [fortyTwoUnsignedNumber unsignedIntValue]; // or 42 NSLog(@"%u", fortyTwoUnsigned); NSNumber *fortyTwoShortNumber = [NSNumber numberWithShort:42]; - short fortyTwoShort = [fortyTwoShortNumber shortValue]; + short fortyTwoShort = [fortyTwoShortNumber shortValue]; // or 42 NSLog(@"%hi", fortyTwoShort); + + NSNumber *fortyTwoShortNumber = [NSNumber numberWithShort:41]; + unsigned short fortyTwoUnsigned = [fortyTwoShortNumber unsignedShortValue]; // or 41 + NSLog(@"%hu", fortyTwoUnsigned); NSNumber *fortyTwoLongNumber = @42L; - long fortyTwoLong = [fortyTwoLongNumber longValue]; + long fortyTwoLong = [fortyTwoLongNumber longValue]; // or 42 NSLog(@"%li", fortyTwoLong); + NSNumber *fortyTwoLongNumber = @53L; + unsigned long fiftyThreeUnsigned = [fortyTwoLongNumber unsignedLongValue]; // or 53 + NSLog(@"%lu", fiftyThreeUnsigned); + // Floating point literals NSNumber *piFloatNumber = @3.141592654F; - float piFloat = [piFloatNumber floatValue]; - NSLog(@"%f", piFloat); + float piFloat = [piFloatNumber floatValue]; // or 3.141592654f + NSLog(@"%f", piFloat); // prints => 3.141592654 + NSLog(@"%5.2f", piFloat); // prints => " 3.14" NSNumber *piDoubleNumber = @3.1415926535; - double piDouble = [piDoubleNumber doubleValue]; + double piDouble = [piDoubleNumber doubleValue]; // or 3.1415926535 NSLog(@"%f", piDouble); + NSLog(@"%4.2f", piDouble); // prints => "3.14" + + // NSDecimalNumber is Objective-C's fixed-point class more precise then float or double + NSDecimalNumber *oneDecNum = [NSDecimalNumber decimalNumberWithString:@"10.99"]; + NSDecimalNumber *twoDecNum = [NSDecimalNumber decimalNumberWithString:@"5.002"]; + // NSDecimal isn't able to use standard +, -, *, / operators. NSDecimalNumber has its own: + [oneDecNum decimalNumberByAdding:twoDecNum]; // add + [oneDecNum decimalNumberBySubtracting:twoDecNum]; + [oneDecNum decimalNumberByMultiplyingBy:twoDecNum]; + [oneDecNum decimalNumberByDividingBy:twoDecNum]; + NSLog(@"%@", oneDecNum); // prints => 10.99 as NSDecimalNumber is immutable. // BOOL literals NSNumber *yesNumber = @YES; NSNumber *noNumber = @NO; + // or + BOOL yesBool = YES; + BOOL noBool = NO; + NSLog(@"%i", yesBool); // prints => 1 // Array object NSArray *anArray = @[@1, @2, @3, @4]; NSNumber *thirdNumber = anArray[2]; NSLog(@"Third number = %@", thirdNumber); // Print "Third number = 3" + // NSMutableArray is mutable version of NSArray allowing to change items in array + // and extend or shrink array object. Convenient, but not as efficient as NSArray. + NSMutableArray *mutableArray = [NSMutableArray arrayWithCapacity:2]; + [mutableArray addObject:@"Hello"]; + [mutableArray addObject:@"World"]; + [mutableArray removeObjectAtIndex:0]; + NSLog(@"%@", [mutableArray objectAtIndex:0]); // prints => "World" // Dictionary object NSDictionary *aDictionary = @{ @"key1" : @"value1", @"key2" : @"value2" }; NSObject *valueObject = aDictionary[@"A Key"]; NSLog(@"Object = %@", valueObject); // Print "Object = (null)" + // Set object + NSSet *set = [NSSet setWithObjects:@"Hello", @"Hello", @"World", nil]; + NSLog(@"%@", set); // prints => {(Hello, World)} + /////////////////////////////////////// // Operators /////////////////////////////////////// -- cgit v1.2.3 From 18f669089e0f5a65adfdfeddaa571a801dd4b865 Mon Sep 17 00:00:00 2001 From: Levi Bostian Date: Mon, 23 Dec 2013 02:26:11 -0600 Subject: Add examples of methods to work with NSSets. Add note of NSSets being unordered. Remove for loop to iterate on NSSet. Moved for loop to loop section. --- objective-c.html.markdown | 25 +++++++++++++++++-------- 1 file changed, 17 insertions(+), 8 deletions(-) diff --git a/objective-c.html.markdown b/objective-c.html.markdown index 0131a34c..95012152 100644 --- a/objective-c.html.markdown +++ b/objective-c.html.markdown @@ -50,9 +50,8 @@ int main (int argc, const char * argv[]) // String NSString *worldString = @"World"; - NSLog(@"Hello %@!", worldString); // prints => "Hello World!" - // The mutable version of NSString is NSMutableString that allows to edit - // individual characters or append strings together. + NSLog(@"Hello %@!", worldString); // prints => "Hello World!" + // NSMutableString is a mutable version of the NSString object. NSMutableString *mutableString = [NSMutableString stringWithString:@"Hello"]; [mutableString appendString:@" World!"]; NSLog(@"%@", mutableString); // prints => "Hello World!" @@ -98,11 +97,11 @@ int main (int argc, const char * argv[]) NSLog(@"%f", piDouble); NSLog(@"%4.2f", piDouble); // prints => "3.14" - // NSDecimalNumber is Objective-C's fixed-point class more precise then float or double + // NSDecimalNumber is a fixed-point class that's more precise then float or double NSDecimalNumber *oneDecNum = [NSDecimalNumber decimalNumberWithString:@"10.99"]; NSDecimalNumber *twoDecNum = [NSDecimalNumber decimalNumberWithString:@"5.002"]; - // NSDecimal isn't able to use standard +, -, *, / operators. NSDecimalNumber has its own: - [oneDecNum decimalNumberByAdding:twoDecNum]; // add + // NSDecimalNumber isn't able to use standard +, -, *, / operators so it provides its own: + [oneDecNum decimalNumberByAdding:twoDecNum]; [oneDecNum decimalNumberBySubtracting:twoDecNum]; [oneDecNum decimalNumberByMultiplyingBy:twoDecNum]; [oneDecNum decimalNumberByDividingBy:twoDecNum]; @@ -132,10 +131,12 @@ int main (int argc, const char * argv[]) NSDictionary *aDictionary = @{ @"key1" : @"value1", @"key2" : @"value2" }; NSObject *valueObject = aDictionary[@"A Key"]; NSLog(@"Object = %@", valueObject); // Print "Object = (null)" + // NSMutableDictionary also available as mutable dictionary object. // Set object NSSet *set = [NSSet setWithObjects:@"Hello", @"Hello", @"World", nil]; - NSLog(@"%@", set); // prints => {(Hello, World)} + NSLog(@"%@", set); // prints => {(Hello, World)} (may be in different order) + // NSMutableSet also available as mutable set object. /////////////////////////////////////// // Operators @@ -216,6 +217,14 @@ int main (int argc, const char * argv[]) // "2," // "3," + // Object for loop statement. Can be used with any Objective-C object type. + for (id item in values) { + NSLog(@"%@,", item); + } // => prints "0," + // "1," + // "2," + // "3," + // Try-Catch-Finally statements @try { @@ -278,7 +287,7 @@ _count = 5; NSLog(@"%d", _count); // prints => 5 // To access public variable outside implementation file, @property generates setter method // automatically. Method name is 'set' followed by @property variable name: -[objInitVar setCount:10]; // objInitVar = variable of object instance @property resides in. +[objInitVar setCount:10]; // objInitVar = random object instance @property resides in. NSLog(@"%@", [objInitVar count]); // prints => 10 // Methods -- cgit v1.2.3 From f15a2b5f782b0f5fb2de6359353f948218860484 Mon Sep 17 00:00:00 2001 From: Levi Bostian Date: Thu, 26 Dec 2013 12:20:16 -0600 Subject: Add more data type examples. Add NSMutableSet examples. --- objective-c.html.markdown | 11 +++++++++-- 1 file changed, 9 insertions(+), 2 deletions(-) diff --git a/objective-c.html.markdown b/objective-c.html.markdown index 95012152..bbdbac4c 100644 --- a/objective-c.html.markdown +++ b/objective-c.html.markdown @@ -131,12 +131,19 @@ int main (int argc, const char * argv[]) NSDictionary *aDictionary = @{ @"key1" : @"value1", @"key2" : @"value2" }; NSObject *valueObject = aDictionary[@"A Key"]; NSLog(@"Object = %@", valueObject); // Print "Object = (null)" - // NSMutableDictionary also available as mutable dictionary object. + // NSMutableDictionary also available as a mutable dictionary object. + NSMutableDictionary *mutableDictionary = [NSMutableDictionary dictionaryWithCapacity:2]; + [mutableDictionary setObject:@"value1" forKey:@"key1"]; + [mutableDictionary setObject:@"value2" forKey:@"key2"]; + [mutableDictionary removeObjectForKey:@"key1"]; // Set object NSSet *set = [NSSet setWithObjects:@"Hello", @"Hello", @"World", nil]; NSLog(@"%@", set); // prints => {(Hello, World)} (may be in different order) - // NSMutableSet also available as mutable set object. + // NSMutableSet also available as a mutable set object. + NSMutableSet *mutableSet = [NSMutableSet setWithCapacity:2]; + [mutableSet addObject:@"Hello"]; + [mutableSet addObject:@"Hello"]; /////////////////////////////////////// // Operators -- cgit v1.2.3 From 03ada8d9751993ad1b36d3d5848678b31ac9021c Mon Sep 17 00:00:00 2001 From: Levi Bostian Date: Thu, 26 Dec 2013 22:26:34 -0600 Subject: Add instance variable definition examples. --- objective-c.html.markdown | 35 +++++++++++++++++++++++------------ 1 file changed, 23 insertions(+), 12 deletions(-) diff --git a/objective-c.html.markdown b/objective-c.html.markdown index bbdbac4c..419c0475 100644 --- a/objective-c.html.markdown +++ b/objective-c.html.markdown @@ -74,7 +74,7 @@ int main (int argc, const char * argv[]) short fortyTwoShort = [fortyTwoShortNumber shortValue]; // or 42 NSLog(@"%hi", fortyTwoShort); - NSNumber *fortyTwoShortNumber = [NSNumber numberWithShort:41]; + NSNumber *fortyTwoShortNumber = [NSNumber numberWithShort:41]; unsigned short fortyTwoUnsigned = [fortyTwoShortNumber unsignedShortValue]; // or 41 NSLog(@"%hu", fortyTwoUnsigned); @@ -82,7 +82,7 @@ int main (int argc, const char * argv[]) long fortyTwoLong = [fortyTwoLongNumber longValue]; // or 42 NSLog(@"%li", fortyTwoLong); - NSNumber *fortyTwoLongNumber = @53L; + NSNumber *fortyTwoLongNumber = @53L; unsigned long fiftyThreeUnsigned = [fortyTwoLongNumber unsignedLongValue]; // or 53 NSLog(@"%lu", fiftyThreeUnsigned); @@ -93,7 +93,7 @@ int main (int argc, const char * argv[]) NSLog(@"%5.2f", piFloat); // prints => " 3.14" NSNumber *piDoubleNumber = @3.1415926535; - double piDouble = [piDoubleNumber doubleValue]; // or 3.1415926535 + double piDouble = [piDoubleNumber doubleValue]; // or 3.1415926535 NSLog(@"%f", piDouble); NSLog(@"%4.2f", piDouble); // prints => "3.14" @@ -112,7 +112,7 @@ int main (int argc, const char * argv[]) NSNumber *noNumber = @NO; // or BOOL yesBool = YES; - BOOL noBool = NO; + BOOL noBool = NO; NSLog(@"%i", yesBool); // prints => 1 // Array object @@ -144,6 +144,7 @@ int main (int argc, const char * argv[]) NSMutableSet *mutableSet = [NSMutableSet setWithCapacity:2]; [mutableSet addObject:@"Hello"]; [mutableSet addObject:@"Hello"]; + NSLog(@"%@", mutableSet); // prints => {(Hello)} /////////////////////////////////////// // Operators @@ -281,11 +282,12 @@ int main (int argc, const char * argv[]) // @end @interface MyClass : NSObject { - int count; - id data; - NSString *name; + // Instance variable declarations (can exist in either interface or implementation file) + int count; // Protected access by default. + @private id data; // Private access. (More convenient to declare in implementation file) + NSString *name; } -// Convenience notation to auto generate public getter and setter +// Convenient notation to auto generate public access getter and setter @property int count; @property (copy) NSString *name; // Copy the object during assignment. @property (readonly) id data; // Declare only a getter method. @@ -294,8 +296,16 @@ _count = 5; NSLog(@"%d", _count); // prints => 5 // To access public variable outside implementation file, @property generates setter method // automatically. Method name is 'set' followed by @property variable name: -[objInitVar setCount:10]; // objInitVar = random object instance @property resides in. -NSLog(@"%@", [objInitVar count]); // prints => 10 +MyClass *myClass = [[MyClass alloc] init]; // create MyClass object instance. +[myClass setCount:10]; +NSLog(@"%@", [myClass count]); // prints => 10 +// You can customize the getter and setter names instead of using default 'set' name: +@property (getter=countGet, setter=countSet:) int count; +[myClass countSet:32]; +NSLog(@"%i", [myClass countGet]); // prints => 32 +// For convenience, you may use dot notation to set object instance variables: +myClass.count = 45; +NSLog(@"%i", myClass.count); // prints => 45 // Methods +/- (return type)methodSignature:(Parameter Type *)parameterName; @@ -310,8 +320,9 @@ NSLog(@"%@", [objInitVar count]); // prints => 10 @end // Implement the methods in an implementation (MyClass.m) file: - -@implementation MyClass +@implementation MyClass { + long count; // Private access instance variable. +} // Call when the object is releasing - (void)dealloc -- cgit v1.2.3