xjs.xjtu

Learning Objective-C in 30min - from CPP’s perspective

本文基本是一篇读书笔记(苹果官网: ProgrammingWithObjectiveC),主要从一个C++程序员的角度出发,学习Objective-C。

Defining classes

// XYZPerson.h
@interface XYZPerson : NSObject

- (void)saySomething:(NSString *)greeting;

@property NSString *firstName;
@property NSString *lastName;
@end

// XYZPerson.m
@implemetaion XYZPerson

- (void)saySomething:(NSString *)greeting {
    NSLog(@"%@", greeting);
}

@end

Working with Objects

Encapsulating Data

@interface SomeClass : NSObject {
    NSString *_myNonPropertyInstanceVariable;
}
@end

@implementation SomeClass {
    NSString *_anotherCustomInstanceVariable;
}
@end
@property (weak) id delegate;
// or
NSObject * __weak weakVariable;
NSObject *cachedObject = self.someWeakProperty;           // 1
if (cachedObject) {                                       // 2
    [someObject doSomethingImportantWith:cachedObject];   // 3
}                                                         // 4
cachedObject = nil;                                       // 5

Customizing exsiting class

// YZPerson+XYZPersonNameDisplayAdditions.h
#import "XYZPerson.h"

@interface XYZPerson (XYZPersonNameDisplayAdditions)
- (NSString *)lastNameFirstNameString;
@end

// YZPerson+XYZPersonNameDisplayAdditions.m
#import "XYZPerson+XYZPersonNameDisplayAdditions.h"

@implementation XYZPerson (XYZPersonNameDisplayAdditions)
- (NSString *)lastNameFirstNameString {
    return [NSString stringWithFormat:@"%@, %@", self.lastName, self.firstName];
}
@end

working with protocol

// MyClass实现MyProtocol
@interface MyClass : NSObject <MyProtocol>
...
@end

values and collections

working with blocks

dealing with Error

Conventions

Reference


xjs.xjtu@gmail.com

2017-12-20